You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS50 readability代码无法编译,出现指针整数比较类错误

错误原因和修复方案

核心错误点

你遇到的编译报错全部来自字符常量的包裹符号误用:

  • C语言语法规定,单个字符常量需要用单引号''包裹,双引号""包裹的内容是字符串,本质是指向字符数组的char*类型指针
  • 你代码中s[i]是从输入字符串中取出的单个char类型值,所有条件判断里你都用了双引号包裹待比较的字符,相当于拿字符和指针做比较,自然触发类型不匹配的编译错误

修复方法

把所有条件判断里的双引号替换为单引号即可,修改后的完整代码如下:

#include <cs50.h>
#include <stdio.h>
#include <string.h>


int main(void)
{   
    // 获取用户输入
    string s = get_string("Text: "); 
    printf("%s\n", s);

    int letters = 0; // 统计字母数
    int words = 1; // 统计单词数,初始为1是因为5个空格对应6个单词
    int sentences = 0; // 统计句子数 

    for( int i = 0; i < strlen(s); i++)
    {
        if((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))
        {
            letters++;
        }
        
        if(s[i] == ' ')
        {
            words++;
        }
        
        if(s[i] == '!' || s[i] == '?' || s[i] == '.')
        {
            sentences++;
        }
    }
    printf("letters %i\n", letters);
    printf("words %i\n", words);
    printf("sentences %i\n", sentences);
}

内容的提问来源于stack exchange,提问作者ErmaloJr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:54:03