C++编译报错:invalid conversion from 'char' to 'const char*'求助
解决编译错误及功能修正方案
错误原因分析
- 类型不匹配触发编译错误:
strcmp函数的参数要求是const char*类型(字符串指针),但你代码中传入的u是单个char,和字符串字面量"I"类型不兼容,这就是invalid conversion from 'char' to 'const char*'错误的根源。单个字符的比较直接用==运算符即可,无需使用字符串比较函数。 - printf格式符误用:
printf("%s", u)里的%s是用于输出字符串的格式符,而u是单个字符,应该用%c格式符输出单个字符。
修正后的代码
#include <stdio.h> #include <ctype.h> #include <string.h> int main(){ char S[10007]; // 读取包含空格的整行输入 scanf("%[^\n]", S); getchar(); int i = 0; char u; while(S[i]){ u = toupper(S[i]); // 单个字符直接用==比较 if(u == 'I'){ u = '1'; } else if(u == 'R'){ u = '2'; } else if(u == 'E'){ u = '3'; } else if(u == 'A'){ u = '4'; } else if(u == 'S'){ u = '5'; } else if(u == 'G'){ u = '6'; } else if(u == 'T'){ u = '7'; } else if(u == 'B'){ u = '8'; } else if(u == 'P'){ u = '9'; } else if(u == 'O'){ u = '0'; } // 用%c输出单个字符 printf("%c", u); i++; } return 0; }
测试验证
输入:im waterswell
输出:1M W4T325W33L,完全符合预期功能要求。
内容的提问来源于stack exchange,提问作者waterswell
相关产品推荐
相关产品推荐

