如何使用C程序检测任何文件的新行

时间:2011-04-26 13:31:50

标签: c arrays file newline scanf

我正在读一个整数文件。我想将每行的整数保存到一个新数组。为此,我想检测一个新的文件行。如果有人知道这一点,请帮助。

要读取的文件如下

1 2 4 5 6
7 3 2 5 
8 3 
9 7 6 2 

6 个答案:

答案 0 :(得分:8)

为什么不使用fgets()一次从文件中获取一行?然后,您可以使用sscanf()代替fscanf()来提取整数。

答案 1 :(得分:2)

#include <stdio.h>
int main ( int argc, char **argv ) {
    FILE *fp = fopen ( "d:\\abc.txt", "r");
    char line[1024];
    char ch = getc ( fp );
    int index = 0;
    while ( ch != EOF ) {
        if ( ch != '\n'){
            line[index++] = ch;
        }else {
            line[index] = '\0';
            index = 0;

            printf ( "%s\n", line );
        }
        ch = getc ( fp );
    }


    fclose ( fp );

    return 0;
}

答案 2 :(得分:0)

使用fgets()一次读取一行输入。然后使用strtol()解析一个整数,使用其“结束指针”功能找出再次尝试的位置,然后循环直到你解析了所有的值。

答案 3 :(得分:0)

使用getc()进行此操作很好,但不要忘记getc()返回类型为int。重新键入char“工作”但你可能有非严格ASCII输入文件的问题,因为EOF = -1 = 0xFF重新键入char(在大多数C编译器上),即0xFF字符被检测为{{1} }。

答案 4 :(得分:0)

#include<stdio.h>
void main()
{
    FILE *p;
    int n;
    int s=0;
    int a[10];
    p=fopen("C:\\numb.txt","r");
    if(p!=NULL)
        printf("file opened");

    while((n=getc(p))!=EOF)
    {   if(n!=NULL && n!='\n')
      {
        printf("\n%d",n);
        a[s]=n;
        ++s;
      }
    }
fclose(p);
getchar();
}

我不确定int到char,反之亦然,但程序适用于非零数字。我试过visual basic。

答案 5 :(得分:-1)

如果你使用char来读取char,那么用'32'识别空格并用'13'和/或'10'识别'输入'