char *vowels = "aeiouyæøå";
int len = strlen(vowels);
int counter;
for (counter = 0; counter < len; counter++) {
char vowel = *vowels++;
printf("%c\n", vowel);
}
或者
char *vowels = "aeiouyæøå";
int len = strlen(vowels);
int counter;
for (counter = 0; counter < len; counter++) {
char vowel = vowels[counter];
printf("%c\n", vowel);
}
或者有更好的方法吗?
答案 0 :(得分:7)
char c;
while ( c = *(vowels++) )
{
}
无需strlen
。
答案 1 :(得分:2)
如果你有一个以空字符结尾的字符串,即一个字符数组,最后有一个额外的0x00字节,你可以使用:
char *foo = "some string";
char *c = foo;
while(*c)
{
// ...
++c;
}
有趣的副作用:
分配为常量的字符串(例如char *foo = "some string"
)应始终以空值终止。
如果您希望牺牲可读性以减少代码计数,您还可以执行以下操作:
char *foo = "some string";
char *c;
for(*c = foo; *c; ++c)
{
// ...
}
答案 2 :(得分:0)
你可以使用递归,但这并不比上面任何一个好。 :)
答案 3 :(得分:0)
这可以在函数中使用,我喜欢它,因为我认为它清楚地表明存在,并且必须是字符串末尾的'\ 0',也没有遍历字符串两次:< / p>
char some_string[] = "aeiouy";
char *vowels;
for (vowels=some_string ; *vowels != '\0' ; vowels++) {
char vowel = *vowels;
printf("%c\n", vowel);
}