我想检查一下该段落中有多少个句子,该句子的定义为
以“.”结尾的句子有两个空格,例如
a.
以“.”结尾的句子和 。比如
a.\n
以“.”结尾的句子与 EOF。比如
a.EOF
我的做法如下
我尝试使用
strncmp(&s,"\n",1)==0
和 strncmp(&s,"\0",1)==0
来检查
和 EOF
但是,它未能检查 和 EOF
如何检查一个字符是EOF还是 用C语言写的?
int main(){
char s;
int count=0;
while(scanf("%c", &s) != EOF){
if(strncmp(&s,".",1)==0){
scanf("%c", &s);
if(strncmp(&s,"\n",1)==0){
count++;
}
else if(strncmp(&s,"\0",1)==0){
count++;
printf("%d", count);
return 0;
}
else if(strncmp(&s," ",1)==0){
scanf("%c", &s);
if(strncmp(&s," ",1)==0){
count++;
}
}
}
}
printf("%d", count);
return 0;
}
EOF
属于 int
类型,因此您无法可靠地检查 char
是否为 EOF
,因为该值可能超出范围。char
具有实现定义的符号性,并且 EOF
通常被定义为负数,因此 char
很可能永远无法仅因为这个原因而保存 EOF
。 char默认是有符号还是无符号?getchar
这样的函数实际上并没有得到 char
,而是得到 int
。是的,这是一些严重腐烂的 API,但自 20 世纪 70 年代初以来,这些功能就一直如此。