我是 C 语言的新手,在尝试输入字符串时我遇到了一个问题。更具体地说,当打印字符串时,字符“N”出现在它的末尾,因此,我无法测量字符的确切数量。这是我的代码:
int main()
{
int j = 0;
char c[15];
printf("Give surname: ");
scanf(" %s", c);
for (int i = 0; i<sizeof(c) / sizeof(c[1]); i++)
{
if (isalpha(c[i]))
{
printf("%c ", c[i]);
j++;
}
}
printf("\nNumber of characters: %d", j);
return 0;
}
例如:如果输入是“john”,那么我会得到以下输出:
我做错了什么?
最佳答案
那是因为您在比实际字符串长的字符数组上使用了 sizeof
运算符。
您可以如上所述使用 string.h
中的 strlen
,或者简单地遍历字符直到 \0
,就像这样:
char * p = c;
while(*p++)
if (isalpha(*p))
printf("%c ", *p);
如果您对字符数感兴趣,您可以只减去指针。
关于c - 'N'字符出现在字符串的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52131764/