C pset2可读性中的分段错误
我正在研究pset 2中的可读性问题。我发现我有一个分段错误,但我相信我已经缩小了范围,它来自于我创建的两个函数,计算用户输入文本中的单词和字母数量C pset2可读性中的分段错误,c,cs50,C,Cs50,我正在研究pset 2中的可读性问题。我发现我有一个分段错误,但我相信我已经缩小了范围,它来自于我创建的两个函数,计算用户输入文本中的单词和字母数量 //function that counts letters int count_letters(string t) { int letters = 0; for (int i = 0, len = strlen(t); i < len; i++) { if (isalpha(t)) {
//function that counts letters
int count_letters(string t)
{
int letters = 0;
for (int i = 0, len = strlen(t); i < len; i++)
{
if (isalpha(t))
{
letters++;
}
}
return letters;
}
//function that counts words
int count_words(string t)
{
int words = 1;
for (int x = 0, len = strlen(t); x < len; x++)
{
if (isspace(t))
{
words++;
}
}
return words;
}
//计数字母的函数
整数计数字母(字符串t)
{
整数字母=0;
for(int i=0,len=strlen(t);i
我不确定如何解决这个问题,并愿意听取任何建议
另外,对于任何格式化问题,我深表歉意。这是我第一次向stack overflow发帖。首先,请描述一下你在说什么。“PSET2中的可读性问题”到底是什么还不清楚。谷歌给了我一些想法,但我们不应该这么做。 其次,isalpha()和isspace()接受一个字符,而不是一个字符串。你可能想要 if(isalpha(t[i])) 另外,您目前甚至没有使用变量“i”。在取消引用之前,还应该检查“t”是否为空字符串。这是最常见的故障原因。
第三,count_words()例程将始终至少返回1。如果传入的字符串为空或只有空格,该怎么办?欢迎使用堆栈溢出。请尽快阅读该页面,并访问描述和(MCVE)的链接。提供必要的详细信息,包括您的MCVE、编译器警告和相关错误(如果有),这里的每个人都可以帮助您解答问题。
for(int i=0;t[i];i++
(相应地调整x
循环)遵循David的修复方法,然后执行:if(isspace((unsigned char)t[i])