fwrite的返回值(If(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1) 是什么意思)
![fwrite的返回值(If(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1) 是什么意思)](/static/images/content_image/animal-1866808_1920.jpg)
本文目录
- If(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1) 是什么意思
- c语言fwrite返回值问题
- C中的fwrite函数
- fwrite函数返回值为什么为0
- C语言 fwrite()和fprintf()的区别
- C程序中If(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)这句是什么意思啊
If(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1) 是什么意思
(1)参数&stud[i] :是一个指针,对fwrite来说,是要获取数据的地址。
(2)参数sizeof(struct strdent_type) :要写入内容的单字节数;
(3)参数1 :要进行写入sizeof(struct strdent_type)字节的数据项的个数是1,;
(4)参数fp:目标文件指针。
(5)返回值是实际写入目标文件中的数据项个数。
“fwrite(&stud[i],sizeof(struct student_type),1,fp)” 就是从stud[i]中获取一个(struct student_type)类型的数据写入到目标文件fp中并返回值。若返回值为1,则执行成功。
这样那if语句的意思就是 若fwite函数返回值 非1(即向目标文件写入失败),就执行if下的语句!
c语言fwrite返回值问题
函数原型:
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
返回值:返回实际写入的数据块数目
例如:你这里count=1,所以如果写入正常的话,就会返回1。
C中的fwrite函数
fwrite是C语言函数,指向文件写入一个数据块。
用法:
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
返回值:返回实际写入的数据块数目
(1)buffer:是一个指针,对fwrite来说,是要获取数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针;
(5)返回实际写入的数据项个数count。
说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
fseek对此函数有作用,但是fwrite 函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。
程序示例:
示例一:
#include 《stdio.h》
struct mystruct
{
int i;
char cha;
};
int main(void)
{
FILE *stream;
struct mystruct s;
if ((stream = fopen(“TEST.$$$“, “wb“)) == NULL) /* open file TEST.$$$ */
{
fprintf(stderr, “Cannot open output file.\n“);
return 1;
}
s.i = 0;
s.cha = ’A’;
fwrite(&s, sizeof(s), 1, stream); /* 写的struct文件*/
fclose(stream); /*关闭文件*/
return 0;
}
示例二:
#include《stdio.h》
#define SIZE 1
typedef struct
{
char name;
int num;
int age;
char addr;
}student;
student stu[SIZE];
void save()
{
FILE *fp;
int i;
if((fp=fopen(“dat.txt“,“w“))==NULL)
{
printf(“无法打开此文件!\n“);
return;
}
for(i=0;i《SIZE;i++)
if(fwrite(&stu[i], sizeof(student), 1, fp) != 1)
printf(“文件写入错误。!\n“);
fclose(fp);
}
void main()
{
int i;
for(i=0;i《SIZE;i++)
scanf(“%s%d%d%s“,&stu[i].name,&stu[i].num,&stu[i].age,&stu[i].addr);
save();
}
fwrite函数返回值为什么为0
函数原型: size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); 返回值:返回实际写入的数据块数目例如:你这里count=1,所以如果写入正常的话,就会返回1。
C语言 fwrite()和fprintf()的区别
fwrite是向流中写入数据,而fprintf是向流中写入格式数据。两者的共同点为向流中写入数据,至于区别可以看看两者的申明:
size_tfwrite(
constvoid*buffer,
size_tsize,
size_tcount,
file*stream
);
intfprintf(
file*stream,
constchar*format[,
argument]...
);
前者fwrite写入流stream中的数据是buffer指定的内容,内容的字节大小分别由size和count两个参数来指定,因此写入流stream中的内容有可能是乱码,但是有效的数据。
后者fprintf写入流stream中的数据则由argument来指定,并且这些argument的内容分别由format指定的格式来显示,因此写入stream的内容通常来说是文本字符流,当然,也允许写入格式乱码。
两者都可以将文本写入流stream中。比如:
fwrite(“helloworld!“,1,12,fp);
与
fprintf(fp,“%s“,“helloworld!“);
等价。
C程序中If(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)这句是什么意思啊
fwrite(&stud[i],sizeof(struct student_type),1,fp)的意思是
将&stud[i]这个指针所指向的内容输出到fp这个文件中,每次输出的数据单元占sizeof(struct student_type)个字节,总共输出1次
如果输出正确,应该是返回1的,因为fwrite返回值是返回正确输出了几个数据单元
If(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)的意思就是“如果没有将内容正确的写入fp中”
![fwrite的返回值(If(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1) 是什么意思)](/static/images/content_image/jellyfish-257860_1920.jpg)
更多文章:
关于C语言中长整型数?C语言中无符号长整型数的输入输出格式是什么
2026年10月10日 21:00
中易广告联盟系统(中易广告联盟程序怎么添加右下角漂浮点击类广告)
2026年10月10日 20:10
java中foreach用法(关于java中c标签foreach的用法)
2026年10月10日 19:20
android系统签名(如何把android系统签名打包成keystore)
2026年10月10日 16:50





