gpt4 book ai didi

c - 如何从标准输入中逐行读取未定义数量的整数?

转载 作者:行者123 更新时间:2023-11-30 19:02:16 25 4
gpt4 key购买 nike

我需要使用 C 从标准输入读取和存储整数,接收格式如下:“35:27,5,10” 每行上有未定义数量的整数,并且行数也未定义。理想情况下,我希望有一个循环,在其中我可以使用最近扫描的行中的值来执行其他任务。我将如何扫描整数并将其存储在数组中,然后在扫描下一行时覆盖数组,依此类推,直到遇到 EOF?

我想我必须结合使用 scanf() 和 strtok(),但我似乎不知道如何使用。我也尝试过使用 getchar() 但这只会让事情变得更加复杂。

最佳答案

该程序读取该格式的文件(在标准输入上),如果发现意外情况,则会发出错误。

//sumline.c  sum integers on each line.
#include <stdio.h>
int main(){
int sum=0;
int rowcount=0;
char buf[30]="";
while(! feof(stdin) )
{
int in;
char sep[2];
if((scanf("%1[^0-9-+]",sep)) && !feof(stdin))
{
fgets(buf,30,stdin);
printf("unexpected %d char (%c,%30s)\n",sep[0],sep[0],buf);
return 1;
}
if( ! scanf("%d",&in))
{
printf("malformed int\n");
return 1;
}
if( feof(stdin) && rowcount == 0 )
{
return 0;
}
sum += in;
if( ! scanf("%1[,:.\n]",sep) && !feof(stdin))
{
fgets(buf,30,stdin);
printf("inexpected char %30s\n",buf);
return 1;
}
else
{
++rowcount;
}

if( sep[0]=='\n' && rowcount )
{
printf("sum=%d\n",sum);
sum=0;
rowcount=0;
}

if( feof(stdin) && rowcount == 0 )
{
return 0;
}
}
return 0;
}

关于c - 如何从标准输入中逐行读取未定义数量的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56178769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com