【发布时间】:2015-08-22 02:07:14
【问题描述】:
我写了这个简单的代码来检查一个字符串是否只有字母和空格
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#define N 100
int checkString(char str1[]);
void main()
{
char str1[N];
scanf("%s", str1);
printf("%d",checkString(str1));
getch();
}
int checkString(char str1[])
{
int i, x=0, p;
p=strlen(str1);
for (i = 0; i < p ; i++)
{
if ((str1[i] >= 'a' && str1[i] <= 'z') || (str1[i] >= 'A' && str1[i] <= 'Z') || (str1[i] == ' '))
{
continue;
}
else{ return 0; }
}
return 1;
}
当我输入类似以下内容时,这很好用:
hello asds //returns 1
hello1010 sasd // return 0
但如果我在空格后输入任何内容,它会返回 1,如下所示:
hello 1220 //returns 1
blabla 11sdws // returns 1
谁能告诉我为什么?
【问题讨论】:
-
你知道
%s只读取第一个字符字符串直到第一个空白字符,对吧?因此,如果您输入"hello 123",那么str将包含"hello",这符合您对全字母或空格的测试。也许fgets稍作改动以修剪尾随换行符可能更符合您的要求。 -
不,我不知道,谢谢你告诉我
-
@WhozCraig 详细信息:
"%s"首先跳过前导空格,然后然后读取(并存储)第一个字符字符串直到第一个空格char。跨度>
标签: arrays c function char c-strings