【发布时间】:2017-09-25 02:59:22
【问题描述】:
我正在阅读以下 data.txt 文件:
b 1
b 2
b 3
b 4
这是一个中间标签
我有下面的代码来打印出来,一行一行,然后一个字符一个字符。
#include <stdio.h>
#include <stdlib.h>
int printCharArray(char *arr);
int main(int argc, char * argv[]){
FILE * filePointer;
filePointer = fopen("data.txt", "r");
char singleLine[32];
while(!feof(filePointer)){
fgets(singleLine, 32, filePointer);
printCharArray(singleLine);
}
fclose(filePointer);
return 0;
}
int printCharArray(char *arr){
int length = 5;
printf("\n");
int i = 0;
for(i=0;i<length;++i){
printf("%c, ", arr[i]);
}
printf("DONE PRINTING \n");
return 0;
}
让我困惑的是它打印出来的内容:
b, , , , 1, DONE PRINTING
b, , , , 2, DONE PRINTING
b, , , , 3, DONE PRINTING
b, , , , 4, DONE PRINTING
我不明白字母和数字之间有 3 个空格。如果都是字符,tab不应该只有一个空格吗?
【问题讨论】:
-
确保您在 data.txt 中确实有制表符,而不是空格...
-
stackoverflow.com/questions/29476556/… 这可能会有所帮助..
-
@JamesMitchell 您的编辑器可能将您的制表符转换为空格。
-
您的输出表明输入文件不包含您认为它包含的内容。事实上,您应该使用十六进制转储程序或等效程序来显示文件中的内容。您对函数中的行长做出了一些可疑的假设。 (您可以将打印修改为:
printf("(%d) %c, ", arr[i], arr[i]);以查看数字字符值是什么。)