我想打印行直到指定的行。如下所示,文本文件的内容写在缓冲区数组上。如何从第一行打印到第五行或第六行?
代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[]) {
char *buffer;
int c;
FILE *input;
int i = 0;
size_t buffer_size;
input = fopen( "input.txt", "r");
if ( input == NULL ) {
perror("Error");
}
buffer_size = BUFSIZ;
if ((buffer = malloc(buffer_size)) == NULL) {
fprintf(stderr, "Error allocating memory (before reading file).\n");
fclose(input);
}
while ((c = fgetc(input)) != EOF) {
buffer[i++] = c;
}
//puts(buffer);
fclose(input);
free(buffer);
return 0;
}
文字内容:
1 test
2 test
3 test test
4 test
5 test test
6 test
7 test
答案 0 :(得分:0)
使用fgets()
就可以轻松完成此操作
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char buffer[BUFSIZ];
FILE *input;
size_t lineCount;
size_t maxLine;
input = fopen("input.txt", "r");
if (input == NULL)
{
perror("Error");
return -1;
}
maxLine = 5;
lineCount = 0;
while ((lineCount < maxLine) && (fgets(buffer, sizeof(buffer), input) != NULL))
{
puts(buffer);
lineCount += 1;
}
return 0;
}
阅读链接中的手册,了解其工作原理。
答案 1 :(得分:0)
使用getline()
功能。此外,您还可以检查回车\r
的出现次数以确定新行。跟踪计数,您将能够打印到您想要的线。
答案 2 :(得分:0)
#include <stdio.h>
int main(void) {
FILE *input;
int c, line, numOfLine = 0;
printf("input line number : ");
scanf("%d", &line);
input = fopen("data.txt", "r");//Error handling is omitted
while ((c = fgetc(input)) != EOF) {
putchar(c);
if(c == '\n' && ++numOfLine == line)
break;
}
fclose(input);
return 0;
}