我是一般的编程新手。请注意,这是作业。 我正在使用a-z小写的txt文件。 我使用命令./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''?你为什么这样做? –
你发布的代码没有编译? –