【发布时间】:2020-07-05 06:14:00
【问题描述】:
我正在尝试计算用户输入中的字母数量,但是,我不断收到 分段错误。谁能告诉我如何纠正这个问题。谢谢!
#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;
}
【问题讨论】:
-
什么是
get_string()?此外,string作为 C 中的一种类型非常模糊。我希望看到char *或const char *。基本上如果字符串已经是一个指针,你不应该传递它的地址。另外,打开警告,因为如果你允许编译器会告诉你这些信息。 -
很抱歉,我不太明白您要说什么。我正在使用 get_string() 进行用户输入。我尝试使用 char * 和 const char * 但这会导致许多其他错误。也没有编译问题,它只是说分段错误。
-
我希望
cs50和它的“字符串”typedef 会消失,而这些学生只会被教导字符数组如何形成字符串的概念。似乎是一个没有太多好处的泄漏抽象。 -
打开所有警告,看看编译器说了什么。此外,告诉崩溃发生在哪一行也会有所帮助。
标签: c count user-input cs50 letter