我是一个学习用C语言编程的新手,我目前正致力于创建一个程序,该程序从用户那里获取名称输入,然后将该名称重新打印到屏幕上。当程序在else if块中打印出名称时,我得到的是$"。我想知道它为什么会发生以及我如何纠正这个问题。我的代码如下:
#include <stdio.h>
#include <stdlib.h>
int main() {
char * ans; // yes/no answer
char * name; //name variable
printf("Welcome to the program. Would you like to begin? (y/n)\n");
scanf("%s", ans);
if (strcmp(ans, "y") != 0) {
printf("Have a good day!\n");
return 0;
}
else if (strcmp(ans, "y") == 0)
printf(" %s\n", ans);
printf("Okay, input your name:\n");
scanf("%s", name);
printf(" %s", name);// I get $ " rather than the name.
return 0;
}
答案 0 :(得分:2)
您正在使用scanf()
来读取用户的字符,但尚未分配任何内存来保存这些字符。这给出了未定义的行为,因为&#34;任何事情都可能发生&#34;当你违反这样的规则时。
将那些未初始化的指针改为数组:
char ans[128];
char name[128];
这为每个字符串提供了128个字符的空格(其中一个将由终结符使用)。