问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言死循环求问

发布网友 发布时间:2023-11-28 12:35

我来回答

2个回答

热心网友 时间:2024-11-23 18:57

int      _Cdecl sscanf   (const char *buffer, const char *format, ...);

函数返回的是成功读入的参数个数。

 你的本意是从(一行)一个字符串中读入几个数,但是字符串不是输入流,不会将已经读过的字符抹去,因此每次读其实都是从头开始,因此,如果从一个字符串中读出几个数,只能用一句,一次读完。不能对一个字符串反复地读。例如:

sscanf(str,"%d%d%s", &i,&i2, &s);


其实:

sscanf(str, "%d", &num) == 1表示成功读入一个数,要想读下一个数,必须从新输入字符串。


语句应该是(假定已知一行有5个数,int num[5],n):

if(n=sscanf(str, "%d%d%d%d%d", num,num+1,num+2,num+3,num+4) )

{ for(i=0;i<n;i++) sum += num[i];}

如果不确定每一行的数的个数,可以按照哪一行最多数的个数定义num,和sscanf语句。比如,每一行最多10个数。定义int num[10];sscanf的项数也增加到10.


下面是网络上的例子,有助于正确理解sscanf函数:

int main() 
      { 
             int i;
             unsigned int j;
             char input[ ]=”10 0x1b aaaaaaaa bbbbbbbb”; 
             char s[5];
             sscanf(input,”%d %x %5[a-z] %*s %f”,&i,&j,s,s); 
             printf(“%d %d %s ”,i,j,s); 
         }

执行输出 10 27 aaaaa

追问设有一个整数文件,每行有若干个整数。
要求编写程序,求文件中各行整数之和并输出到另一个文件。
假定整数文件中每行的整数个数不定,每行最后一个整数之后
可以有多余的空格符,也可能直接以换行符结束。
然后这里面的程序是需要修改(不能改太厉害),其实你的方法我没怎么懂

追答

你的程序离题目的要求相去甚远:

下面的程序是根据题意编写的:

#include "stdio.h"
int main()
{
  int i,j;
  char c;
  FILE *inf,*ouf;
  inf=fopen("1.txt","r");
  ouf=fopen("2.txt","w");
  j=0;
  while (fscanf(inf,"%d",&i)!=EOF)
     {
       printf("%d\n",i);
       j+=i;
       while ((c=fgetc(inf))==32);/*跳过空格*/
        if (c=='\n')/*一行结束输出合计,清空累加器j*/
         {
           fprintf(ouf,"%d\n",j);
           j=0;
           continue;
          }
        else if (c==EOF)/*文件结束,虽然没有换行符,也要把最后的合计输出*/
         {
           fprintf(ouf,"%d\n",j);
           break;
         }
        else if (c=='+' || c=='-'||(c>='0' && c<='9')) ungetc(c,inf);/*将数字字符放回去*/
      }
   fcloseall();
   getchar();
   return 0;
 }


txt:

1 2 3 4 5
1 2
-1 1 0 15
78 9 10

2.txt

15
3
15
97

热心网友 时间:2024-11-23 18:58

当sscanf(str, "%d", &num) == 1为真时,读取到的num累加到sum后,又重新开始从str这个地址开始重复读你刚刚读出的数据了,所以会一直进行下去。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 前几天看到一个视频,一条大蟒蛇把一个兔女郎吃了,这应该是个电影的某... 为什么说“色字头上一把刀”?1 岗位职责和岗位要求的区别 求这副中药的价格23 ...再次开通,提示“您已经开立了基金交易账户”,如何处理? 福建哪里有收购甘蔗?6 张爱玲《倾城之恋》中的精彩句子,求15句!(表抄)56 蘑菇街什么兑换现金的验证码图片咋个排序 怎么把微信好友转移到另一个? 一只电饭煲和一台洗衣机并联接在输出电压u=311sin314...1 不到一年怎么改第二次 扬泰机场到泰州碧桂园怎么走?打的的话多久到啊?本人是晚上九点的班机... 为什么编译成功的程序用java.exe 运行却显示失败呢? java程序已经编译通过,执行时出现如图错误,这是为什么? N个相同的电阻并联接到一电源上,电源内阻不计,将N个电阻从并...4 安徽合肥一学生在宿舍炒龙虾被消防员批评教育,学生这么做有什么... 有没有药房上班的大神,可以帮我算算抓这些中草药大概要多少钱吗... 大家帮忙看下..这一副中药多少钱..?6 里面那个是玉石吗,特别硬,通透性也好 无锡硕放机场到无锡市区怎么走 我感觉我不喜欢男朋友了,但是他对我真的很好很好,而且他也很认...2 ...我也带上了闺蜜。我出去上厕所回来的时候看到男朋友的手和闺蜜_百... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 福建哪里有人收购鸡宝??5 一般一副治胃病的中药多少钱?7 电源12V4A,用电器12V5A,加多大电阻才能让用电器正常... 哪里可以在线看到(乞丐王子)韩剧14 什么样的痣不能点,我的痣在下嘴唇下一点,有绿豆这么大,要去好的医院... 荣昌西部饲料兽药市场在哪 寿山石与田黄石有什么不同(详细点)?39 一年内第二次修改技巧 作文 以心迎新 论文1500字 电源12V4A,用电器12V5A,加多大电阻才能让用电器正常... 以心迎新 论文 2500字 食道癌术后饮食30 登陆蘑菇街的时候需要发验证码,可是那个手机号现在不用了怎么办_百度知... ...很是迷茫,请了解的前辈指点一下,小弟万分 感谢qq290188316 ...区县级以上人民政府支持单位和个人围绕黄河流域的哪些方面开展文_百 ... ...①第五次反围剿失败②遵义会议召开 ③八一南昌起义④古田会议... 大鱼缸可以养水草吗,养什么水草呢?2