gpt4 book ai didi

c - 使用 malloc() 创建字符数组时抛出异常

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:46 24 4
gpt4 key购买 nike

本质上,我正在尝试创建一个程序,该程序使用动态分配的内存来简单地接收用户的输入然后打印它。是的,我知道如何以简单的方式做到这一点,但我正试图掌握 C 中内存管理的复杂性。那么这段代码有什么问题呢?它运行没有错误,但是当我在命令行中输入一个字符串时,它停止工作并在十六进制地址处抛出异常。先感谢您。

int main() {
char *input;

input = (char *)malloc(20 * sizeof(char));
puts("Enter the string you wish to display");
scanf_s("%s", input);
printf_s("%s", *input);
free(input);
return 0;
}

最佳答案

你的编译器应该警告你这一行:

printf_s("%s", *input);

如果没有,您需要启用“所有警告”设置。 (在 gcc 和 clang 上,将 -Wextra 添加到命令行。)

本质上,参数类型 (char) 与格式字符串 (const char*) 期望的类型不匹配。 *input 取消引用字符指针,因此求值为字符串中的第一个字符。 "%s" 需要一个指向以 nul 结尾的字符数组的指针。

如果您删除 *,它应该可以工作:

printf_s("%s", input);

关于c - 使用 malloc() 创建字符数组时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54535531/

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