gpt4 book ai didi

C- 读取文件并在打印文件内容时得到意想不到的结果

转载 作者:太空宇宙 更新时间:2023-11-04 08:42:58 25 4
gpt4 key购买 nike

我有一个程序从命令行读取文件(由整数组成的文件 - 见下文),将其放入一个数组,然后打印该数组。

#include <stdio.h>
#include <stdlib.h>

#define SIZEBUFF 1024


int main (int argc, char *argv[])
{

if (argc < 2)
{
printf("Missing file\n");
return (EXIT_FAILURE);
}

FILE *file = fopen (argv[1],"r");
int integers [144]; //Array that input is stored

char buffer[SIZEBUFF];
int count = 0;
while (fgets(buffer,sizeof (buffer),file) > 0){ // !=EOF gives seg. fault if used
integers[count] = atoi(buffer);
count++;

}

fclose(file);

printf ("The contents of integer array are: \n");

int j;
for (j = 0; j < 144;j++) printf ("%d\t",integers[j]);

return (EXIT_SUCCESS);


}

enter image description here

注意:真实文件由 144 个整数组成。我刚拿了前12个

如何只打印文件中存在的数字?

最佳答案

这个问题是因为您编写的代码假设 fgets() 在每次调用时从文件中读取一个整数。但如果整数存储在同一行,则情况并非如此。

fgets() 在读取 (n-1) 个字符、读取换行符或到达文件末尾时停止,以先到者为准。

所以这里 fgets 一次从文件中读取多个整数,所以 atoi() 也没有从文件中获取整数。
您可以使用 fscanf() 直接读取整数,

fscanf(file,"%d",&integers[count]);

你可以循环这个语句 144 次,因为你知道文件中的整数个数或者可以使用,

  fscanf (file, "%d", &integers[count]);    
while (!feof (file))
{
fscanf (file, "%d", &integers[++count]);
}

关于C- 读取文件并在打印文件内容时得到意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22819113/

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