gpt4 book ai didi

c - 为什么我的 printf() 不打印文本文件中的第一个字符?

转载 作者:行者123 更新时间:2023-11-30 18:34:00 25 4
gpt4 key购买 nike

我是一名菜鸟 C 程序员。我无法读取文本文件的所有字符。我的 file.txt 有数字:9,2,3,4,5,6,但是当我运行下面编写的代码时,它只是跳过 9 并打印其余的数字。然而,当我在 9 之前加一个空格时,它运行得很好。我如何解决它?为什么会发生这种情况?

FILE* fp;
fp = fopen("file.txt", "r");
int a[10];
char ch;

while((ch=getc(fp))!= EOF)
{
fscanf(fp, "%d", &a[ch]);
printf("%d ", a[ch]);
}

提前致谢;

最佳答案

函数getcwhile((ch=getc(fp))!= EOF)消耗文件中的单个字符;如果9是文件中的第一个字符,它将被简单地读入 ch并且 - 由于您的字符集可能是 ASCII - 将设置 ch==0x39 .

所以 (1) 9然后将不再可用于 fscanf(fp, "%d", &a[ch]); ;这就是为什么您认为它被“跳过”。

(2) 写信给a位于ch位置然后超出 a 的数组边界.

关于c - 为什么我的 printf() 不打印文本文件中的第一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53745498/

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