【发布时间】:2022-11-13 14:28:32
【问题描述】:
#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(strcmp(u, "I") == 0){
u = '1';
}
else if(strcmp(u, "R") == 0){
u = '2';
}
else if(strcmp(u, "E") == 0){
u = '3';
}
else if(strcmp(u, "A") == 0){
u = '4';
}
else if(strcmp(u, "S") == 0){
u = '5';
}
else if(strcmp(u, "G") == 0){
u = '6';
}
else if(strcmp(u, "T") == 0){
u = '7';
}
else if(strcmp(u, "B") == 0){
u = '8';
}
else if(strcmp(u, "P") == 0){
u = '9';
}
else if(strcmp(u, "O") == 0){
u = '0';
}
printf("%s", u);
i++;
}
return 0;
}
我遇到了一种情况,我需要将输入的字符串设为大写,然后将一些大写字母更改为以下数字(示例输入:im waterswell,otuput:1M W4T325W33L)所以我创建了程序,但它返回以下错误:从 'char' 到 'const char*' [-fpermissive] 的无效转换。谁能帮我?谢谢你
【问题讨论】:
-
你确定你在写 C++ 吗? C++ 具有 std::string (具有各种功能)。而不是所有那些 if/then/else 您可以使用 std::map<char,char> (或 std::unordered_map<char,char> 进行查找。
-
要比较字符,请使用
==和字符文字,例如if (u == 'O')。对于打印字符,没有printf格式说明符,因此您可以创建一个字符数组以用作以空字符结尾的字符串:char str[2] { u, '\0' }; printf("%s", str);,但您可能只需修改 inpur 数组并一次性打印所有内容。 .. -
这应该被标记为一个 C 问题,因为它没有什么特别的 C++。