如何在C中比较整数和换行符?

时间:2014-04-11 02:49:17

标签: c integer compare newline

我已经知道如何将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)和整数仅

1 个答案:

答案 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);