我正在读取一个名为 data.txt
的文件,如下所示:
b 5
b 2
b 9
每行有 3 个字符:tab 之间的空格。
我有以下代码一次读取一行。
int main(int argc, char * argv[]){
FILE * filePointer;
filePointer = fopen("data.txt", "r");
char singleLine[3*sizeof(char)];
while(!feof(filePointer)){
fgets(singleLine, 3*sizeof(char), filePointer);
//printCharArray(singleLine);
puts(singleLine);
}
fclose(filePointer);
return 0;
}
singleLine 基本上是每行文本放入的缓冲区。我最初让它像 char singleLine[20]
,一个足够大的任意数字,但我希望它是精确的,所以我做了 char singleLine(3*sizeof(char))
。我的逻辑是每行有 3 个字符,所以这应该可行。
遗憾的是没有,运行时打印出来如下:
b
5
b
2
b
9
当我粗心地使用 char singleLine[20]
时,它会正常工作,如下所示。但我想以正确的方式去做。怎么了?
b 5
b 2
b 9
最佳答案
- 您的数组只能容纳两个字符和空终止符。
- 您的行有四个字符(包括换行符)。
关于c - 读取每行 3 个字符的文件时,sizeof(char) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46386535/