gpt4 book ai didi

c - 是什么导致我的打印语句产生不同的结果?

转载 作者:行者123 更新时间:2023-11-30 21:20:29 25 4
gpt4 key购买 nike

我是一名学习 C 语言编程的新手,目前正在创建一个程序,该程序接受用户输入的名称,然后将该名称打印回屏幕上。当程序打印出 else if block 中的名称时,我得到的是 $ "。我想知道为什么会发生这种情况以及如何纠正这个问题。我的代码如下:

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

最佳答案

您正在使用 scanf() 从用户读取字符,但尚未分配任何内存来保存这些字符。这会产生未定义的行为,因为当您违反这样的规则时“任何事情都可能发生”。

将那些未初始化的指针改为数组:

char ans[128];
char name[128];

这为每个字符串提供了 128 个字符的空间(其中一个将由终止符使用)。

关于c - 是什么导致我的打印语句产生不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37608905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com