我正在尝试计算用户输入中的字母数,但我一直得到分段故障。有人能告诉我如何纠正这个问题吗。非常感谢。
#include <stdio.h>
#include <cs50.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
int count_letters(int length, string array[]);
int main(void)
{
string Text = get_string("Text:");
int len = strlen(Text);
printf("%i letter(s)n", count_letters(len, &Text));
}
int count_letters(int length, string array[])
{
int letters = 0;
for(int i = 0; i < length ; i++)
{
if (isalpha(array[i]))
{
letters++;
}
}
return letters;
}
在int count_letters(int length, string array[])
中,参数array
已经是字符数组的指针,[]
是错误的。
如果将其更改为int count_letters(int length, string array)
,并将其从main
调用为count_letters(len, Text)
,则程序将运行。
注意,cs50.h
已经将string
声明为char *
。
(我完全同意Christian Gibbins的观点,即string
数据类型应该从cs50.h
中删除(