我正在读取整数文件。我想将每行的整数保存到一个新的数组中。为此,我想检测一个文件的新行。如果有人知道这一点,请帮助。如何使用C程序检测任何文件的新行
要读取的文件如下
1 2 4 5 6
7 3 2 5
8 3
9 7 6 2
我正在读取整数文件。我想将每行的整数保存到一个新的数组中。为此,我想检测一个文件的新行。如果有人知道这一点,请帮助。如何使用C程序检测任何文件的新行
要读取的文件如下
1 2 4 5 6
7 3 2 5
8 3
9 7 6 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;
}
在这个程序中有一些分段错误...我试图找出原因.... – 2011-04-26 13:53:08
我没有得到任何分段错误,请注意线限于1024.这是示例代码,您可以扩展它进一步。 – Avinash 2011-04-26 13:55:42
我有一行少于4或5个整数... – 2011-04-26 14:00:21
如果使用由字符阅读炭然后识别空白与“32”和“输入”由“13”和/或“10”
从不硬编码ASCII值。使用字符常量,例如''代表空格,'\ n'代表换行,'\ r'代表回车。当你想要的时候也使用isspace()。 – unwind 2011-04-26 14:03:55
使用getc()
这个动作很好,但不要忘记,getc()
返回类型是int。重新输入为字符“有效”,但由于在重新输入为char(在大多数C编译器上)后EOF = -1 = 0xFF
(即0xFF
字符被检测为EOF
),您可能会遇到非严格ASCII输入文件的问题。
#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,反之亦然转换,但程序适用于非零数字。我尝试了视觉基础。
那么,你到目前为止有什么?你知道如何打开一个文件并从中读取吗?你知道如何一次读一行吗? – 2011-04-26 13:35:24
['fgets()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/fgets.html)从输入流中读取**行**。使用它和['sscanf()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/scanf.html)。 – pmg 2011-04-26 13:36:53