输入一个字符串,内有数字和非数字字符,例如:
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 删了。
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 删了。
