这段代码存在一个问题,即指针变量`name`没有分配内存空间,所以不能直接使用`scanf`函数来读取字符串。为了修复这个问题,你可以通过以下方法来修改代码:
#include <stdio.h>
#include <stdlib.h> // 添加此行
int main(void)
{
char *name = malloc(sizeof(char) * 20); // 使用动态内存分配分配足够的空间
if (name == NULL) {
printf("Failed to allocate memory!\n");
return -1;
}
printf("What's your name: ");
scanf("%19s", name); // 限制输入的字符数,防止溢出
printf("Your name is %s\n", name);
free(name); // 释放动态分配的内存空间
return 0;
}
在这个修改后的代码中,我们使用了`malloc`函数来动态分配了足够的内存空间来存储字符串。我们还添加了对内存分配是否成功的检查,并使用`free`函数来释放分配的内存空间,以避免内存泄漏。
请记住,当使用动态内存分配时,务必在使用完毕后及时释放内存,以免造成资源浪费和内存泄漏的问题。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |