我是编程新手。我在这段代码中找不到错误。 我正在尝试将一些字符翻译成数字。
程序要求输入一条消息,但在我输入字符后没有任何显示。
#include <stdio.h>
#define N 100
int main (void)
{
char message[N];
int i;
printf ("Enter a message: ");
for (i=0; i<N; i++){
scanf ("%c", &message[i]);
}
// characters are in the array
for (i=0; i<N; i++){
if (message[i]=='a')
message[i]='4';
if (message[i]=='b')
message[i]='8';
if (message[i]=='e')
message[i]='3';
if (message[i]=='i')
message[i]='1';
if (message[i]=='o')
message[i]='0';
if (message[i]=='s')
message[i]='5';
}
// characters are translated
for (i=0; i<N; i++)
printf ("%c ", message[i]);
// characters are printed
return 0;
}
答案 0 :(得分:1)
您只需使用scanf("%s",message);
这样你就不必等待输入所有100个字符,你可以检查你给出的任何输入(可能少于100个字符)。您可以使用printf
printf("%s",message);
使用switch
根据不同情况更改字符。
switch(message[i]){
case 'a': message[i]='4';break;
...
}
而不是循环所有N
字符循环,直到strlen(message)
或message[i]!='\0'
答案 1 :(得分:0)
for (i=0; i<N; i++){
scanf ("%c", &message[i]);
}
应该是
scanf ("%s", message);
你应该替换这个循环
for (i=0; i<N; i++){
if (message[i]=='a')
message[i]='4';
if (message[i]=='b')
message[i]='8';
if (message[i]=='e')
message[i]='3';
if (message[i]=='i')
message[i]='1';
if (message[i]=='o')
message[i]='0';
if (message[i]=='s')
message[i]='5';
}
这一个:
char*m;
for (m=message; *m; m++){
switch (*m)
{
case 'a': *m=4; break;
case 'b': *m=8; break;
and so on...
}
最后
printf ("%s\n", message);
答案 2 :(得分:0)
您使用什么编译器?您的代码在https://www.jdoodle.com/c-online-compiler中运行良好。 对于这种情况,如果我完全理解,您可以更好地获得完整的消息,使用:
scanf("%s", message);
而不是:
for (i=0; i<N; i++){
scanf ("%c", &message[i]);
}