gpt4 book ai didi

c - C 中的 I/O 重定向

转载 作者:行者123 更新时间:2023-11-30 15:31:11 26 4
gpt4 key购买 nike

我编写此代码是为了将标准输入重定向到文件

 #include <stdio.h>

int main() {
FILE* log = fopen("log.txt", "a");
char c = ' ';
while (c != 'q') {
scanf("%c", &c);
printf("%c", c);
fputs(&c, log);
}

fclose(log);

}

但是当我输入:“Hello worldq”时,我在日志文件中得到以下内容:

H˜|‚ue˜|‚ul˜|‚ul˜|‚uo˜|‚u ˜|‚uw˜|‚uo˜|‚ur˜|‚ul˜|‚ud˜|‚uq˜|‚u

这是什么~|,u,我该如何修复它?

最佳答案

不要使用fputs,而是正确使用fputc(c, log)fprintf(log, "%c", c)

您使用的 fputs 假设首先是一个以 \0 结尾的字符串,导致过度读取,从而导致未定义的行为。

您可能会得到 ~|‚ 或其他内容,甚至可能出现段错误,具体取决于您不知道的因素。

来自手册页

fputc() writes the character c, cast to an unsigned char, to stream.
fputs() writes the string s to stream, without its terminating null byte ('\0').

关于c - C 中的 I/O 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25012441/

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