使用fgets()在struct中写入空行
读取文件时,我也想读取其空行,但它不工作:使用fgets()在struct中写入空行,c,C,读取文件时,我也想读取其空行,但它不工作: while(fgets(line, 25, file) != NULL) { sscanf(line, "%s", fooStruct.text); } 是否有其他方法可以从文本中读取空行?如果该行为空,则sscanf将返回0,表示没有成功完成的转换。在这种情况下,您可以将文本设置为空字符串 while(fgets(line, 25, file) != NULL) { if ( sscanf(line, "%s", fooStruct.
while(fgets(line, 25, file) != NULL) {
sscanf(line, "%s", fooStruct.text);
}
是否有其他方法可以从文本中读取空行?如果该行为空,则
sscanf
将返回0,表示没有成功完成的转换。在这种情况下,您可以将文本设置为空字符串
while(fgets(line, 25, file) != NULL) {
if ( sscanf(line, "%s", fooStruct.text) != 1 )
fooStruct.text[0] = '\0'; // sscanf failed, must be a blank line
}
另一种方式。。。像使用getc()
逐个读取字符一样,计算行中的字符串长度
如果为1,则表示它只读取换行字符
,然后,您可以在文件中适当地添加换行符
,以表示空行。如果您不想只在fooStruct.txt
中存储一个单词,而是想存储整行,那么以下操作也可以使用:while(fgets(fooStruct.txt,25,file)!=NULL){}<代码>,将包含空白行。调用<代码> fgScript()<代码> >读取空白行就行了。生成的缓冲区行
将包含:\n'\0'。但是,使用“%s”格式说明符调用
sscanf()`将不会输入“\n”,因此fooStruct.text
将只接收由sscanf()
函数附加的“\0”。我的理解是,使用“%s”格式说明符的sscanf()将始终附加NUL字节,因此,无需专门插入NUL字节。@user3629249只有当sscanf
成功时,才需要这样做。当sscanf
失败时,如此处所示,输出缓冲区不会被修改,并且包含它开始时使用的任何垃圾。