输入一个字符串到数组名为a的数组中,过滤掉所有的非数字字符并把其存储到一个新的字符数组digit中,输出由数字字符组成的字符串。
先上答案
#include<stdio.h>
#include<ctype.h>
int main()
{
char a[100] = { 0 };
char digit[100] = { 0 };
int i;
int j = 0;
gets(a);
for (i = 0; a[i] != '\0';i++)
{
if (isdigit(a[i]))
{
digit[j] = a[i];
j++;
}
}
puts(digit);
return 0;
}
注意:数组需要初始化。(不初始化可能导致不可预测的结果。 在使用变量之前,始终应初始化变量。)
第一步:
我们要学会gets和puts这两个输入输出函数
gets
可以看到他的函数原型的参数是字符型的指针,所以常用于字符串的输入。与scanf("%s",数组名)相似,但要记住gets仅仅可以用来作为“char”型的字符输入,也同样需要考虑输入结束时敲下空格也占用一个空间,使用时要注意数组溢出的问题。
扩展:
如图所示:如果gets成功,返回值为输入的参数;
如果失败用NULL来表示,用ferror和feof来区分是哪一种错误。
feof:当文件读取结束时,判断是不是遇到文件末尾才结束的。
ferror:当文件读取结束时,判断是不是遇到错误才读取结束的。
(学文件操作的时候会学到)
优点:
他可以接收空格,Tab键,碰到回车输入才结束。
让代码更加简洁且缓冲区不会遗留' \n '
puts
与puts同理,参数是地址或者字符串
注意:puts打印结束后自动换行。
扩展:
如图所示,成功返回一个非负值;失败返回则EOF;
puts函数将字符串写入标准输出流stdout,用输出流中的换行符替换字符串的结束空字符。
isdigit
isdigit是C语言中的一个函数(课本中有表述过)头文件为
#include<ctype.h>
c++中为
#include<cctype.h>
第二步:
哒哒哒的敲出来
忘了有这个函数也问题不大,继续往下看
PLUS(自己写函数):
#include<stdio.h>
int my_isdigit(int c)
{
if ((c >= '0' && c <= '9'))
{
return c;
}
return 0;
}
int main()
{
char a[100] = { 0 };
char digit[100] = { 0 };
int i;
int j = 0;
gets(a);
for (i = 0; a[i] != '\0';i++)
{
if (my_isdigit(a[i]))
{
digit[j] = a[i];
j++;
}
}
puts(digit);
return 0;
}
相信聪明的你一定可以!
endl