cin gt gt a用c语言怎么写写,一初学者问我一问题,C语言的,然后我用笨拙的方法实现cin.putback...
发布日期:2021-06-24 15:52:07 浏览次数:4 分类:技术文章

本文共 1079 字,大约阅读时间需要 3 分钟。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

输入一个字符串,内有数字和非数字字符,例如:

A123x456 14354?302tab 589

将其中连续的数字作为一个整数,一次存放到一数组中。流入,123放到 a[0],

456放在a[1]……统计共多少个整数,并输出这些数

这个是他问我的C语言的问题。不少人看到这样的题马上想到了字符串转化又怎样怎样吧。我想使用C++的cin.putback()实现,代码如下

#include

#include

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

printf("%d ",a[i]);

printf("\n总共有%d个数",n);

return 0;

}

然后他非所这是C++的,我又不想用**的一个一个转的方法,就生硬地用文件读取实现了一个简单的 cin.putback()函数,觉得挺有意思,所以放出来让大家一起看看。如果C语言库函数里面本身就有这样的函数还请告知,查百度查了很久都没找到。

代码如下:

#include

#include

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

printf("%d ",a[i]);

printf("\n总共有%d个数",n);

return 0;

}

其实也不算实现了cin.putback(),反正算是按这样的思路完成了这道题,算是个偏方吧。有兴趣的朋友可以运行下,记得运行完了以后去C盘把1.txt 2.txt 删了。

转载地址:https://blog.csdn.net/weixin_33642922/article/details/117131740 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:图片轮播c语言,IOS开发之UIScrollView实现图片轮播器的无限滚动
下一篇:c语言读取多个连续的文件,C语言---多个线程读取文件

发表评论

最新留言

不错!
[***.144.177.141]2024年04月06日 22时29分09秒