gpt4 book ai didi

c - C 中的基本文件 IO 生成所有 a

转载 作者:行者123 更新时间:2023-11-30 19:27:47 24 4
gpt4 key购买 nike

我在 Windows 上使用 CodeBlocks 进行编译。

为什么程序给我这个答案?为什么有这么多a却得不到答案123456abcdef

#include <stdio.h>
#include <stdlib.h>

int main(void) {
FILE *fp;
char s[100] = "abcdef";
char c1 = '0';
int i = 0;

fp = fopen("ot.txt", "w");
if (fp == NULL) {
printf("file open error");
exit(0);
}

while (s[i] != '\0') {
fputc(s[i], fp);
i++;
printf("%d", i);
}

while (c1 != EOF) {
c1 = fgetc(fp);
putchar(c1);
}
fclose(fp);
}

最佳答案

您的代码中存在多个问题:

  • c1应使用类型 int 定义适应 fgetc() 返回的所有值。一个char无法明确存储EOF .
  • 您应该以写入+更新模式打开文件"w+"
  • 您应该在读回流指针之前倒回流指针,原因有两个:读取和写入操作之间需要执行查找操作,并且您希望从文件开头读取字符。
  • 您需要测试 EOF 使用 fgetc() 读取一个字节之后,否则你将输出EOF转换为unsigned charstdout在退出循环之前。
  • return 0; 风格很好来自main()表示成功,非零表示失败。

这是更正后的版本:

#include <stdio.h>

int main(void) {
FILE *fp;
char s[] = "abcdef";
int i, c;

fp = fopen("ot.txt", "w+");
if (fp == NULL) {
printf("file open error\n");
return 1;
}

i = 0;
while (s[i] != '\0') {
fputc(s[i], fp);
i++;
printf("%d", i);
}

rewind(fp);
while ((c1 = fgetc(fp)) != EOF) {
putchar(c1);
}
printf("\n");
fclose(fp);
return 0;
}

关于c - C 中的基本文件 IO 生成所有 a,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55401988/

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