网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月24日漏签0天
c语言吧 关注:801,637贴子:4,374,239
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 0回复贴,共1页
<<返回c语言吧
>0< 加载中...

一初学者问我的问题,C语言的,然后我用笨拙的方法实现cin.putback

  • 只看楼主
  • 收藏

  • 回复
  • 菊花残思密达
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
输入一个字符串,内有数字和非数字字符,例如:
    A123x456 14354?302tab 589
将其中连续的数字作为一个整数,一次存放到一数组中。流入,123放到 a[0],
456放在a[1]……统计共多少个整数,并输出这些数
这个是他问我的C语言的问题。不少人看到这样的题马上想到了字符串转化又怎样怎样吧。我想使用C++的cin.putback()实现,代码如下
#include<stdio.h>
#include<iostream>
using std::cin;
int main()
{
      int a[256];
      int n=0;
      char c;
      while((c=getchar()) != '\n')
      {
          if(c>=48 && c<=57)
          {
              cin.putback(c);
              fscanf(stdin,"%d",&a[n++]);
          }
      }
      for(int i=0;i<n;++i)
          printf("%d ",a[i]);
      printf("\n总共有%d个数",n);
      return 0;
}
然后他非所这是C++的,我又不想用**的一个一个转的方法,就生硬地用文件读取实现了一个简单的 cin.putback()函数,觉得挺有意思,所以放出来让大家一起看看。如果C语言库函数里面本身就有这样的函数还请告知,查百度查了很久都没找到。
代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
      int a[256];
      int n=0;
      char c;
      FILE *fp1,*fp2 = stdin;
      while((c=fgetc(fp2)) != '\n')
      {
          if(c>=48 && c<=57)
          {
              fp1 = fopen("c:\\1.txt","wb");
              fputc(c,fp1);
              while(fputc(fgetc(fp2),fp1) != '\n');
              fclose(fp1);
              fclose(fp2);
              system("copy /y c:\\1.txt c:\\2.txt");
              fp2 = fopen("c:\\2.txt","rb");
              fscanf(fp2,"%d",&a[n++]);
          }
      }
      for(int i=0;i<n;++i)
          printf("%d ",a[i]);
      printf("\n总共有%d个数",n);
      return 0;
}
其实也不算实现了cin.putback(),反正算是按这样的思路完成了这道题,算是个偏方吧。有兴趣的朋友可以运行下,记得运行完了以后去C盘把1.txt 2.txt 删了。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 0回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示