C pset2可读性中的分段错误

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)) {

我正在研究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))
       {
       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])