c - 数组和字符的问题

标签 c

我是编程新手。我在这段代码中找不到错误。 我正在尝试将一些字符转换为数字。

程序要求输入消息,但我输入字符后什么也没有显示。

#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;
}

最佳答案

您可以使用 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'

关于c - 数组和字符的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47178888/

相关文章:

c - 如何在尝试访问数组时修复 "Program received signal SIGSEGV, Segmentation fault."

c - C 中的 "Generic"函数 - 对 2 个不同的库使用相同的时间测量函数

c - 通过管道输入 getchar() 提示 c

c - 识别索引 vector 上的循环;制作 list ,减去旋转

c - SDL_PollEvent() 循环未执行。没有事件正在排队吗?

c - 在 C 中通过引用传递二维数组

c - LNK1112 : module machine type 'IA64' conflicts with target machine type 'X86'

c - 如何重写 POSIX C 代码以使用数据报套接字而不是文件

c - "count"和其他变量 "i"之间有什么区别?

c - 当非阻塞 send() 仅传输部分数据时,我们可以假设它会在下一次调用时返回 EWOULDBLOCK 吗?