Linux--文件操作\0问题

该程序展示了在C语言中如何使用fwrite,fprintf和fputs向文件log.txt写入数据。尽管字符串在C语言中以结尾,但在写入文件时,并不视为有效内容,因此strlen(s1)不需要加1。如果添加1,可能会导致文件内容出现乱码。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <unistd.h>
#include <string.h>

int main()
{
  FILE* fp=fopen("log.txt","w");
  if(fp==NULL)
  {
    perror("fopen");
    return 1;
  }

  //进行文件操作
  const char* s1="hello fwrite\n";
  fwrite(s1,strlen(s1),1,fp);

  const char* s2="hello fprintf\n";
  fprintf(fp,"%s",s2);

  const char* s3="hello fputs\n";
  fputs(s3,fp);

  fclose(fp);
  return 0;
}

以  const char* s1="hello fwrite\n";为例,对于打印到log.txt文件而言,对应文件内容的大小,fwrite中的strlen(s1)需要+1吗?

答:不需要。\0结尾是C语言的规定,而文件要保存的是有效数据。\0只是标定文件结束的文件标识符,不是有效数据。相反,你如果+1的话会出现乱码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值