c - 为什么我的 printf() 不打印文本文件中的第一个字符?
问题描述
我是一个菜鸟 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]);
}
提前致谢;
解决方案
函数getc
inwhile((ch=getc(fp))!= EOF)
使用文件中的单个字符;如果9
是文件中的第一个字符,它将被简单地读入ch
并且 - 因为您的字符集可能是 ASCII - 将设置ch==0x39
.
因此 (1)9
将不再适用于fscanf(fp, "%d", &a[ch]);
; 这就是为什么你认为它被“跳过”。
(2) 写入a
at 位置ch
然后超出 的数组边界a
。
推荐阅读
- php - Check if value is exist in database jQuery and php
- bash - What Is the Best Way to Perform a Search and Replace On only Specific Sections of a File?
- c++ - Implementing virtual function without a derived class
- sql-server - Connecting to an SQL server using a different domain account
- python - OpenModelica Interactive Simulation with OPCUA and Python
- swift - Launch screen integration using info.plist in XCode 12
- node.js - Node.js reports "Use-After-Free" vulnerability with puppeteer
- node.js - socket.io error on PlanetHoster - Phussion Passenger
- javascript - How to use destructuring and assignment syntax to make immutable copy of object with different key names
- javascript - I doing a course of React and i have a error when i try add a functionality to my course project