如何使用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'表示回车符。这是一个很好的建议,因为它将系统调用的数量减少到每行一个,而不是每字符一个。表演很棒!