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
相关产品推荐
相关产品推荐

