我想编写一个程序,将用户输入的消息翻译成B1FF语音。但是,该程序似乎在此处崩溃:
#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]);
错误在哪里?我似乎找不到。 我想了解为什么这段特定的代码会使我的程序崩溃。
谢谢。
答案 0 :(得分:1)
您需要在scanf语句中添加一个&符。
Given: [(10, 12), (12, 37)]
Output: [(0,10),(37,48)]
Given: [(9, 15)]
Output: [(0,9),(15,48)]
Given: [(0, 15), (15, 17), (17, 19), (21,25)]
Output: [(19,21),(25,48)]
Given: [(23, 35),(40,47)]
Output: [(0,23),(35,40),(47,48)]
答案 1 :(得分:0)
您需要将地址传递给scanf:
scanf("%c", &message[i]);
答案 2 :(得分:0)
问题在于,您应该将指针传递给 scanf 。 通常,您传递一个数组(它是一个指针)或一个字符指针(字符串)。您正在做的是传递char本身。该方法无法将某些内容写入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]);