对于初学者来说,似乎有一个错字
while (ch != '\0');
^^^
无论如何,这个代码片段
int Y = 0;
while (ch != '\0');
if(strchr(text,'.') != NULL)
Y++;
if(strchr(text,'!') != NULL)
Y++;
if(strchr(text,'?') != NULL)
Y++;
没有意义,因为目标字符的搜索总是从text
.
如果对每个目标符号使用函数的单独调用,则该函数strchr
不适合此任务。
在这种情况下,使用此功能您需要三个单独的循环,每个目标符号一个。
这是一个演示程序,它显示了如何使用另一个字符串函数来执行该任务strcspn
。
#include <stdio.h>
#include <string.h>
size_t count_symbols( const char *s, const char *delim )
{
size_t n = 0;
while ( *s )
{
if ( *( s += strcspn( s, delim ) ) )
{
++n;
++s;
}
}
return n;
}
int main(void)
{
const char *s = "Firt. Second? Third! That is all.";
printf( "%zu\n", count_symbols( s, ".!?" ) );
return 0;
}
程序输出为
4