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

如何使用C程序检测任何文件的新行,c,arrays,file,newline,scanf,C,Arrays,File,Newline,Scanf,我正在读一个整数文件。我想把每一行的整数保存到一个新数组中。为此,我想检测文件的新行。如果有人知道,请帮忙 要读取的文件如下所示 1 2 4 5 6 7 3 2 5 8 3 9 7 6 2 为什么不使用一次从文件中获取一行呢?然后,您可以使用而不是fscanf()来提取整数。如果您使用逐字符读取,然后识别带有“32”的空格以及由“13”和/或“10”输入的“enter”< #include <stdio.h> int main ( int argc, char **argv

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

要读取的文件如下所示

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

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

如果您使用逐字符读取,然后识别带有“32”的空格以及由“13”和/或“10”输入的“enter”

<
#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;
}
int main(int argc,字符**argv){ 文件*fp=fopen(“d:\\abc.txt”,“r”); 字符行[1024]; char ch=getc(fp); int指数=0; while(ch!=EOF){ 如果(ch!='\n'){ 行[index++]=ch; }否则{ 行[索引]='\0'; 指数=0; printf(“%s\n”,第行); } ch=getc(fp); } fclose(fp); 返回0; }
使用
一次读取一行输入。然后使用
解析一个整数,使用它的“结束指针”功能找出重试的位置,并循环直到解析完所有值。

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

\
#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();
}
void main() { 文件*p; int n; int s=0; INTA[10]; p=fopen(“C:\\numb.txt”,“r”); 如果(p!=NULL) printf(“文件打开”); 而((n=getc(p))!=EOF) {如果(n!=NULL&&n!='\n') { printf(“\n%d”,n); a[s]=n; ++s; } } fclose(p); getchar(); }

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

那么,到目前为止,您有什么经验?你知道如何打开文件并从中读取吗?你知道如何一次读一行吗?从输入流中读取行。使用它和。这个程序中有一些分段错误。。。我正在试图找出原因…我没有得到任何分割错误,请注意,行限制为1024。这是示例代码,您可以进一步扩展它。不要硬编码ASCII值。使用字符常量,如“”表示空格、\n'表示换行符、\r'表示回车符。这是一个很好的建议,因为它将系统调用的数量减少到每行一个,而不是每字符一个。表演很棒!