本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!