gpt4 book ai didi

c - 文件处理中的意外输出

转载 作者:太空宇宙 更新时间:2023-11-04 07:10:49 24 4
gpt4 key购买 nike

我的输入文件是这个

1001
1001
1101
1109

我有以下代码-

char line[4];    
while(fgets(line,5,input)!=NULL)
{
printf("%s",line);

}

它给我正确的输出如下-

1001
1001
1101
1109

但是如果我将我的代码修改成这样-

while(fgets(line,5,input)!=NULL)
{
printf("%s",line);
for(i=0;i<4;i++)
{
int c=line[i]-'0';
printf("% d ",c);
}printf("\n");
}

我现在得到奇怪的答案-

1001 1    0    0    1   

-38 -48 0 1
1001 1 0 0 1

-38 -48 0 1
1101 1 1 0 1

-38 -48 0 1
1009 1 0 0 9

-38 -48 0 9

为什么我的第二种情况会出现这种奇怪的输出??

最佳答案

您的 char 数组有 4 个元素,而您试图将 5 个元素 [考虑空终止符] 放入其中。

通过这种方式,您正在访问会产生未定义行为的越界内存。

此外,值得一提的是,fgets() 读取并存储换行符。你需要自己处理。

关于c - 文件处理中的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28557668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com