【发布时间】:2019-08-26 21:00:05
【问题描述】:
在 c 中,要搜索字母 a-z,我可以执行以下循环:
char s[10];
int c;
int has_letter = 0;
for (int i=0; (c=s[i])!='\0'; i++) {
if (c>='a' && c<='z')
has_letter = 1;
}
但是,什么是字符不是连续的,例如:
// see if any of the following letters are in it: 'adiuo'
char s[10];
int c;
int has_letter = 0;
for (int i=0; (c=s[i])!='\0'; i++) {
if (c=='a' || c=='d' || c=='i' || c=='u' || c=='o')
has_letter = 1;
}
有没有办法简化这种结构?例如,执行以下操作:
char s[10];
int c;
int has_letter = 0;
for (int i=0; (c=s[i])!='\0'; i++) {
if (c in "adiuo") // possible to do something like this?
has_letter = 1;
}
【问题讨论】:
-
您发布的代码在进入循环之前未能初始化
has_letter,因此除非循环将1分配给它,否则无法确定它将具有什么值。 -
您已经提出了一次测试单个字符的问题,但是对于您的示例代码完成的任务,您只需调用一次
strcspn()即可进行测试一口气所有s的字符。
标签: c