gpt4 book ai didi

c - 用 C 写入文件不起作用

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

我有以下代码,在输入字符后,我不断收到“程序已停止工作”错误。

我做了一些调试,发现问题出在写入文件部分,但我找不到问题。

有人可以帮助我吗? (我是 C 语言新手)

#include <stdio.h>

int main()
{

char characters;

printf("Input your characters: ");
scanf("%s", &characters);

FILE *fp = fopen("File.txt", "w");
fprintf(fp, "%s", characters);
fclose(fp);

}

最佳答案

在您的代码中,characters 的类型为 char,不适合存储字符串。您需要将字符作为数组。

本质上,由于%s,幕后发生的事情是,输入值(即使是单个char)被存储在地址指向的内存中提供,但此后,尝试存储终止 null 会导致越界访问。这会调用 undefined behavior .

引用 C11,第 §7.21.6.2 章,fscanf(),(强调我的)

s Matches a sequence of non-white-space characters.286)

If no l length modifier is present, the corresponding argument shall be apointer to the initial element of a character array large enough to accept thesequence and a terminating null character, which will be added automatically.

关于c - 用 C 写入文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40661245/

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