我用C语言编写了一个“摩尔斯编码器”程序。我可以执行代码,没有错误,但有逻辑错误。它没有给出我想要的。用户以字符串形式输入内容,然后按Enter键,但不会发生输出。
这是我的代码。看看它。也许您注意到我做错了。
FooImpl2
我认为我在将const char *转换为char或反之亦然的过程中做错了事。
答案 0 :(得分:4)
const char *phrase;
phrase
尚未初始化,所以当您这样做
scanf("%s",phrase);
您正在写入内存中的某个随机位置,从而导致不确定的行为。
您需要首先为字符串分配空间。要么作为数组
char phrase[100];
或通过分配内存
char *phrase=malloc(100);
声明中的const
限定符也没有多大意义,因为您在将内容传递给scanf
时更改了内容。将其放在函数上很好,因为函数不会更改值。
答案 1 :(得分:0)
我听了所有答案,发现我发布此问题时没有考虑。我犯的错误真是愚蠢。现在,我已经修复了代码,但是只剩下一件事了,这就是循环部分。该程序仅返回第一个字母。尽管我仍在尝试,但我无法不幸地纠正它。如果有人可以提供帮助,我将不胜感激。
答案 2 :(得分:0)
问题是我要求输入字符。
scanf("%c",phrase);
因此,即使用户输入了一个字符串,它也只保存了第一个字符。更改它以请求字符串可以解决逻辑错误。
scanf("%s",phrase);