我正在编写以下代码:
#include <stdio.h>
#include <ctype.h>
int main() {
// printf("enter some argument \n");
int count_words = 0;
int count_char = 0;
int cnonalpha = 0;
char s;
printf("enter string");
while( ((s = getchar()) != EOF) && (s != '\n') )
{
if( (s >= 'a' && s <= 'z') || (s >= 'A' && s <= 'Z') )
{
count_char++;
//putchar(s);
}
else {
putchar(s);
cnonalpha++;
}
}
fprintf(stderr, "%s: error writing stdout\n", s);
}
这给了我一个分割错误。可能是什么原因?
更新1 根据下面的答案,我已经更改了程序 实际上,我要执行的操作是通过getchar从stdin中获取输入,然后在while循环中逐字符打印在stdout上获取的输入或将其存储在变量中,然后使用isalpha比较字符值 这是我写的另一个程序
#include <stdio.h>
#include <ctype.h>
int main ()
{
int c;
int n=0;
puts ("Enter text. Press Enter to exit sending input");
while ((c=getchar())!='EOF'){
if (isalpha(c))
else{
putchar (c);
n++;
}
}
return 0;
}
〜 我想做的是打印可能输入的非字母字符并计算其数量。
答案 0 :(得分:0)
segmantation错误,因为您将指针传递给了printf,但是变量为char。以偶数表示的char的整数值转换为指针(当然,它指向的位置是不可预测的),并且当printf尝试取消引用时,它将调用Undefined Behavior-可能发生任何事情,segfault,比萨顺序...。