Я новичок в программировании в целом. Обратите внимание, что это для домашней работы. Я использую txt-файл с a-z в нижнем регистре. Я использую команду ./a.out test.txt
для запуска программы, а затем введите число.C Программа для печати первой и последней n строк в файле, что я делаю неправильно?
мой код:
#include <stdio.h>
static void cat(FILE *fp, int num) {
int count = 0;
char buffer[4096];
while (fgets(buffer, sizeof(buffer), fp) != 0) {
if (count == num)
break;
else
count++;
fputs(buffer, stdout);
}
}
int main(int argc, char *argv[]) {
int num, count = 0;
long length;
char buffer[4096];
FILE *fp;
fp = fopen(argv[1], "r");
if (fp == NULL) {
printf("Can't open this file\n");
return 0;
}
scanf("%d", &num);
cat(fp, num);
printf("...\n");
fseek(fp, 0, SEEK_END);
length = ftell(fp);
fseek(fp, (length - 2), SEEK_SET);
printf("1\n");
while (fgets(buffer, sizeof(buffer), fp) != 0) {
fputs(buffer, stdout);
}
if (ftell(fp) == '\n') {
count++;
length = ftell(fp);
fseek(fp, (length - 4), SEEK_SET);
printf("2\n");
while (fgets(buffer, sizeof(buffer), fp) != 0) {
fputs(buffer, stdout);
}
} else { //<------ missing opening brace
length = ftell(fp);
fseek(fp, (length - 2), SEEK_SET);
printf("3\n");
while (fgets(buffer,s izeof(buffer), fp) != 0) {
fputs(buffer, stdout);
}
if (count == num) {
printf("4\n");
while (fgets(buffer, sizeof(buffer), fp) != 0) {
fputs(buffer, stdout);
}
}
fclose(fp);
return 0;
}
Пожалуйста, помогите!
Пожалуйста, добавьте белое пространство между операторами код трудно читать, и что это 'ftell (FP) == '\ n''? зачем ты это делаешь? –
Вы опубликовали код, который не компилировался? –