文件求助

jiutianc 2011-12-31 02:41:56
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
FILE * fp;
if((fp = fopen("a.txt","w")) == NULL)
{
puts("error");
exit(1);
}
char s[100] = "nihoamahaha";
fputs(s,fp);
char a[100];
rewind(fp);
fgets(a,10,fp);
puts(a);
fclose(fp);
return 0;
}

想从新建的文件中读取前9个字符,显示在屏幕上,屏幕上出现乱码,但新建的文件中的内容正确,想知道这个程序在哪里错了,怎么改正,感谢
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tdicer 2011-12-31
  • 打赏
  • 举报
回复
LZ 已经rewind了,在定义a[]的时候初始化下
面包大师 2011-12-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q191201771 的回复:]

fopen("a.txt","w")
改成
fopen("a.txt","w+")
[/Quote]
++
还有名字 2011-12-31
  • 打赏
  • 举报
回复
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。   w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
IVERS0N 2011-12-31
  • 打赏
  • 举报
回复
错了是

if((fp = fopen("a.txt","a+")) == NULL)
就想叫yoko 2011-12-31
  • 打赏
  • 举报
回复
fopen("a.txt","w")
改成
fopen("a.txt","w+")
IVERS0N 2011-12-31
  • 打赏
  • 举报
回复



FILE * fp;
if((fp = fopen("a.txt","r+")) == NULL)
{
puts("error");
exit(1);
}
char s[100] = "nihoamahaha";
fputs(s,fp);
char a[100]={0};
rewind(fp);
fgets(a,10,fp);
printf("%s",a);
fclose(fp);
getchar();
return 0;
andy_y39548 2011-12-31
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
FILE * fp;
if((fp = fopen("a.txt","w")) == NULL)
{
puts("error");
exit(1);
}
char s[100] = "nihoamahaha";
fputs(s,fp);
char a[100];
fseek(fp, 0, SEEK_SET);rewind(fp);
fgets(a,10,fp);
puts(a);
fclose(fp);
return 0;
}

你的文件定位指针已到文件尾了。在fgets函数这前加上fseek(fp, 0, SEEK_SET);就OK了,你试试

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧