C语言将输入字符串中ASCII码小于97的字符组成新串输出
编译环境VS2017
需要注意的是fgets()的使用,fgets函数会默认在字符串末尾加上"\n",此问题中,\n的 ASCII码小于97会影响结果,并且在输出字符数组是\n会以换行的形式输出,例如:
可以看出,结果有误,多输出了换行并且统计数也多了1,多出来的就是\n可以用以下代码解决\n的问题
char* find;
find = strchr(str1, '\n'); //查找换行符
if (find) {//如果find不为空指针
*find = '\0';//就把一个空字符放在这里
}
具体实现如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int fun()
{
int i, j = 0;
char str1[20];
char str2[20];
char *find;
printf("请输入一串字符\n");
fgets(str1, 20, stdin);
find = strchr(str1, '\n'); //查找换行符
if (find) {//如果find不为空指针
*find = '\0';//就把一个空字符放在这里
}
for (i = 0; i < 20; i++)
{
if (str1[i] < 'a')
{
str2[j] = str1[i];
j++;
}
}
printf("ASCII码小于97的字符组成的字符串为%s\n", str2);
return strlen(str2);
}
void main()
{
printf("ASCII码小于97的字符数为:%d\n", fun());
system("pause");
}
运行结果如下: