C++中如何判断文件行结束

12321223其中第一行数据不知道具体有多少个数字,在pascal中是eoln(input),请问在C++中如何实现?... 1 2 3
2
1 2
2 3

其中第一行数据不知道具体有多少个数字,在pascal中是 eoln(input),请问在C++中如何实现?
展开
 我来答
金色潜鸟
推荐于2018-03-29 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5698万
展开全部
有很多方法可以判断。
例如 fgets 获取 整行内容,再分析 数据个数。
下面用 窥测 一个字符 的方法,判断 是否 '\n' 是否 EOF 或得每行数据:
用 void read_fp_one_line_int_data(int *a, int *n, FILE *fp);
读1 行,数据个数 存于 n, 数据 存于 a[], 文件 fp
主程序 读 整个文件,读1 行, 输出 n 和 本行 数据。

#include <stdio.h>

void read_fp_one_line_int_data(int *a, int *n, FILE *fp){
char c;
int k=0;
while(1){
c=getc(fp);
while (c==' ') c=getc(fp);
if (c == '\n' || c==EOF) break;
if ((c>='0' && c <='9') || c == '-') {
ungetc ( c, fp);
fscanf(fp,"%d",&a[k]); k++;
}
};
*n=k;
}

int main()
{
FILE *fp;
int i,n=0;
int a[20];

fp=fopen("abc.txt","r"); // 数据文件
do {
read_fp_one_line_int_data(a, &n,fp);
printf("n=%d\n",n);
if (n>0) {for (i=0;i<n;i++) printf("%d ",a[i]); printf("\n");};
} while(!feof(fp));

fclose(fp);
return 0;
}
匿名用户
2014-02-06
展开全部
如果屏幕输入的话,是这样的:
int a[maxn],i=0;//maxn随便是什么值,只要足够大。
while(scanf("%d",a[i])==1)//如果有输入scanf("%d",a[i])就为真,不然就为假(无输入的话以Ctrl+z(系统是windows的前提下)结束即可)
i++;
如果是文件,只能用EOF:
getchar()()函数当输入流出错或者到达末尾的时候,就会返回EOF
while((c=getchar()()) != EOF) 就是检查是否读取到了输入流末尾,是就跳出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cpucash
2014-02-07 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:969万
展开全部
一般来说可以按二进制读取,\r\b就是行的结束,就是回车换行的两个字符
也可以按字符串读取,全部读取进来,再判断
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Rankabc
2014-02-06 · TA获得超过3561个赞
知道大有可为答主
回答量:3705
采纳率:59%
帮助的人:1066万
展开全部
#include<stdio.h>
int main()
{
FILE *fp;
char ch;
int n=0;
if((fp=fopen("test.txt","r"))==NULL)
{
printf("\nCannot open file strike any key exit!");
return 1;
}
ch=fgetc(fp);
if(ch<='9'&&ch>='0')n++;
while(ch!=EOF)
{
ch=fgetc(fp);
if(ch<='9'&&ch>='0')n++;
if(ch=='\n')break;
}
printf("第一行数字个数:%d\n",n);
fclose(fp);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shamoguo
2014-02-06 · TA获得超过103个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:125万
展开全部
是做acm吧,用EOF
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式