我已经知道如何将char类型与换行符(\ n)进行比较,但我想知道如何将整数与换行符(\ n)进行比较。可能吗? (我做了研究以找到我的答案,但我最终得到了需要字符类型的答案)
我输入了带有数字的文本文件:
11 22 33 44 55 1
2 3 4 56 777
1
255
3
5
我希望输出看起来像这样
[11][22][33][44][55][1]<newline>[2][3][4][56][777]<newline>[1]<newline>[255]<newline>[3]<newline>[5]<newline>
lineNumber:[6]
但我得到的输出是
[11][22][33][44][55][1][2][3][4][56][777][1][255][3][5]
lineNumber:[0]
这是我使用
的代码int *integers = malloc(sizeof(int) * 200);
int i=0, lineNumber=0, num=0;
//int num;
while(fscanf(file, "%d", &num) > 0)
{
if(num == '\n'){
printf("<newline>");
lineNumber++;
}
integers[i] = num;
printf("[%d]", integers[i]); // Just to show output.
i++;
}
printf("\nlineNumber:[%d]", lineNumber);
我不想使用char类型的原因是因为我将char数字重新转换为整数...我想关心换行符(\ n)和整数仅
答案 0 :(得分:1)
您可以尝试在每个整数后读取换行符,然后检查fscanf的返回以查看读取了多少项。
int *integers = malloc(sizeof(int) * 200);
int i=0, lineNumber=0, num=0;
int read;
char nl[2];
while((read=fscanf(file, "%d%[\n]", &num, &nl)) > 0)
{
integers[i] = num;
printf("[%d]", integers[i]); // Just to show output.
i++;
if(read == 2){
printf("<newline>");
lineNumber++;
}
}
printf("\nlineNumber:[%d]", lineNumber);