调用一些函数可以执行,但是执行结果不对,请高手们看看,告诉我问题在哪里?谢谢

发布于 2022-09-29 22:31:11 字数 577 浏览 11 评论 0

#include <stdio.h>
int main()
{
FILE *fp;
int i,nmemb;
char s[]={'x','i','n','g'};
fp=fopen("/root/hello.c","w");
if(fp!=NULL)printf("open success!")
i=fwrite(s,4,nmemb,fp);
printf("i=%d",i);
fclose(fp);
}
------------
程序编译后执行显示为:
[root@localhost mnt]# gcc fwrite.c -o fwrite
[root@localhost mnt]# ./fwrite
open success!i=0
----------------
正常应该是显示i=4啊。然后我用cat命令查看了 hello.c里面是空文件,根本没有写进去。
我调用write也一样。写不进去 .请高手们指教,谢谢~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谈情不如逗狗 2022-10-06 22:31:11

fwrite(将数据写至文件流)
相关函数
        fopen,fread,fseek,fscanf
表头文件
        #include<stdio.h>
定义函数
        size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);
函数说明
        fwrite()用来将数据写入文件流中。参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。Fwrite()会返回实际写入的nmemb数目。
返回值
        返回实际写入的nmemb数目。
范例
        #include<stdio.h>
#define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);}
#define nmemb 3
struct test
{
char name[20];
int size;
}s[nmemb];
main()
{
FILE * stream;
set_s(0,”Linux!”);
set_s(1,”FreeBSD!”);
set_s(2,”Windows2000.”);
stream=fopen(“/tmp/fwrite”,”w”);
fwrite(s,sizeof(struct test),nmemb,stream);
fclose(stream);
}

i=fwrite(s,4,nmemb,fp); 改为 i = fwrite(s, sizeof(char), 4, fp);
就可以了,基本的函数用法要弄明白了。

转瞬即逝 2022-10-06 22:31:11

你那个nmemb本来就没初始化,Linux下就是0,Windows是乱七八糟的值!

天赋异禀 2022-10-06 22:31:11


明白了
谢谢楼上的 2位大俠

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文