如何用fgets读取TXT文件每行前255字节并跳过剩余内容?
每行仅读取前255字节的实现方案
你当前代码的问题是:fgets 遇到超过 BUFFER_SIZE-1 长度的行时,会分多次读取剩余内容,导致整行都被输出,不符合“超过255字节就跳过剩余部分”的需求。下面是修正后的代码:
修正代码
#define BUFFER_SIZE 256 // 要读255个有效字符,需留1字节存终止符'\0' char string[BUFFER_SIZE]; while (fgets(string, BUFFER_SIZE, input)) { fprintf(output, "%s", string); // 判断当前是否读取完一整行:如果字符串里没有换行符,说明行还没读完 if (!strchr(string, '\n')) { // 跳过该行剩余的所有字符,直到遇到换行或文件结束 int c; while ((c = fgetc(input)) != EOF && c != '\n') { // 空循环,仅丢弃多余字符 } } }
关键说明
- BUFFER_SIZE的取值:
fgets的第二个参数是“最多读取的字符数(含终止符\0)”,所以要读取255个有效字节,需要把BUFFER_SIZE设为256,否则设为255的话最多只能读254个有效字符。 - 剩余内容跳过逻辑:用
strchr检查读取的字符串是否包含换行符,若不包含,说明当前行还有剩余内容,用fgetc逐个读取并丢弃,直到碰到换行符或文件结尾,这样就不会把超过255字节的部分输出。
内容的提问来源于stack exchange,提问作者Kurbamit
相关产品推荐
相关产品推荐

