问题描述
- C语言中的fgets问题,结果输出多出一行“(null)”
-
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
char* main01()
{
//写文件操作
char* FileName="c:/1.txt";
char ch[]="nr";
FILE* fp=NULL;
fp=fopen(FileName,"wb");
if(fp == NULL)
{
printf("open file error:n");
}
fputc('c',fp); //写一个字符
fputs("abcdefg",fp);//写一个字符串fwrite(ch,2,1,fp); //写入时换行 fprintf(fp,"nr"); //写入时换行 fputs("hijklmnn",fp); fclose(fp); return FileName;
}
void main03(char* file_name)
{
//fgets读文件操作
char* FileName=file_name;
char buf[100];
FILE* fp=NULL;
fp=fopen(FileName,"r");
if(fp == NULL)
{
printf("Open file error:n");
}
while( !feof(fp))
{
printf("%s",fgets(buf,100,fp));
}
fclose(fp);
system("pause");
}void main()
{
char* File_Name=main01();
main03(File_Name);
system("pause");
}运行结果:
cabcdefghijklmn
(null)请按任意键继续. . .(null)是指什么意思?我再文件里没有写入“(null)”
解决方案
哦,知道了。原来是fputs会自动增加一个换行符,所以,导致文件指针读取该空白行时会多出一个(null)
解决方案二:
fputs("hijklmn",fp);你这句话里面给你写了个换行符,把换行符去掉fputs("hijklm",fp);
时间: 2024-08-02 23:09:45