因为工作的需要,需要按行读取文件内容。所以偷懒直接使用了fgets来使用。
使用过程中,发现fgets在读取行内容的过程中,会将末尾的换行符 '\n'也读进来。
测试代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *fp = NULL;
char buff[256];
int ret = 0;
int i = 0;
if(argc != 2)
{
printf("param is error.\n");
printf("please input: ./a.out file\n");
return -1;
}
fp = fopen(argv[1], "r");
if(fp == NULL)
{
printf("fopen %s fail.\n", argv[1]);
return -1;
}
while(!feof(fp))
{
memset(buff, 0, sizeof(buff));
if(fgets(buff, sizeof(buff), fp) != NULL)
{
//先打印出来读取到的内容
for(i = 0; i < strlen(buff); i++)
{
printf("%.2x ", buff[i]);
}
printf("\n");
//直接打印字符串
printf("buff:%s", buff); //注意,这里printf是没有加 '\n' 的
//去掉最后的换行符
buff[strlen(buff) - 1] = '\0';
printf("buff:%s\n", buff);
}
}
return 0;
}
测试输入文件内容:
iiiiiiii
测试程序输出结果:
69 69 69 69 69 69 69 69 0a
buff:iiiiiiii
buff:iiiiiiii