C:让用户用一个字符填充一个字符.然后打印



我想编写一个程序,该程序将用户输入的消息转换为b1ff-Speac。但是,该程序似乎在这里崩溃:

#define MAX_LEN 80
char message[MAX_LEN];
printf("Enter a message: ");
for (int i = 0; i < MAX_LEN - 1; i++)
    scanf("%c", message[i]);
for (int i = 0; i < MAX_LEN - 1; i++)
    printf("%c", message[i]);

错误在哪里?我似乎找不到它。我想理解为什么这条特定的代码崩溃了我的程序。

预先感谢。

您需要在scanf语句中添加一个andand。

scanf("%c", &message[i]);

问题在于,您应该将指针传递给 scanf 。通常,您通过数组(是指针)或char-pointer(字符串)。您正在做的是通过炭本身。该方法没有可能在char中写入某些内容,因为它是在函数调用之前复制的。

发生的事情是该方法将非初始化的字符解释为地址,并试图写入最有可能失败的随机位置。

只需传递char的地址:

char message[MAX_LEN];
printf("Enter a message: ");
for (int i = 0; i < MAX_LEN - 1; i++)
    scanf("%c", &message[i]);
for (int i = 0; i < MAX_LEN - 1; i++)
    printf("%c", message[i]);

您需要将地址传递给scanf:

scanf("%c", &message[i]);

最新更新