gpt4 book ai didi

c - c编程中读取文本文件并存入数组

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

我想读取文本文件并存储在数组中然后显示。

这是我的代码:

  int i = 0, line = 5;
char ch[100];

FILE *myfile;
myfile = fopen("test.txt","r");
if (myfile== NULL)
{
printf("can not open file \n");
return 1;
}

while(line--){
fscanf(myfile,"%s",&ch[i]);
i++;
printf("\n%s", &ch[i]);
}

fclose(myfile);

return 0;
}

这是我的文字:

测试 123562

856

59986

但是结果:

估计

2356

56

9986

怎么了? :(

最佳答案

<罢工> ch[i]持有一个字符。声明fscanf(myfile,"%s",&ch[i]);将字符串扫描到 ch[i]它只能容纳一个字符。 '\0' 没有位置这会导致您的程序出现未定义的行为。更改

fscanf(myfile,"%s",&ch[i]);  

fscanf(myfile,"%s",ch);

<罢工>


之前的回答是错误的。程序的行为已明确定义,但您正在以错误的方式扫描文件。如果您放置 i++;,您的程序将按预期工作。在 printf 之后陈述。

while(line--){
fscanf(myfile,"%s",&ch[i]);
printf("\n%s", &ch[i]);
i++;
}

原因是&ch[i]是指向数组的第 ith 元素的指针,字符串将存储在数组中从位置 i 开始的位置.对于给定的输入,这将起作用,因为给定的数组足够大以容纳字符串。

您可以这样做:

while(line--){
fscanf(myfile,"%s",ch);
printf("\n%s", ch);
i++;
}

但它会覆盖数组ch每次扫描一个字符串。最好使用二维数组来存储字符串并使用 fgets 读取文件.

关于c - c编程中读取文本文件并存入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27856886/

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