我一直在为这段代码工作,我似乎无法弄清楚我的代码有什么问题。我试图使程序接受两个命令行参数,第一个是要读取的文本文件的名称,第二个是要打印的文件行数。我试图创建一个循环,计算行数,每次到达新行字符时添加一个,另一个循环打印文本行,但我有很多麻烦。我只是在编程课程的介绍中,这是C语言,我已经尝试了很多方法来完成这项工作。这是我的代码中应该执行此操作的函数。任何帮助将不胜感激!
char ch = 0;
long num_lines = 0;
while(!feof(fileequals)){
ch = fgetc(fileequals);
if(ch == '\n'){
num_lines++;
}
}
fseek(fileequals, 0, SEEK_SET);
const int length = 100;
char line[length];
char *c = 0;
long line_count = 0;
if(num_rows_to_read > num_lines){
num_rows_to_read = num_lines;
}
do{
c = fgets(line, length, fileequals);
if (c != NULL && (line_count >= num_lines - num_rows_to_read)){
printf("%s", line);
line_count++;
}
else{
continue;
}
}while (c != NULL);
}
答案 0 :(得分:0)
“LINE_COUNT ++;”应该在每次执行fgets()之后执行,而不管if语句。 do-while循环应该是这样的:
do{
c = fgets(line, length, fileequals);
if (c != NULL && (line_count >= num_lines - num_rows_to_read)){
printf("%s", line);
}
line_count++;
}while (c != NULL);
答案 1 :(得分:0)
尝试替换此:
do{
c = fgets(line, length, fileequals);
if (c != NULL && (line_count >= num_lines - num_rows_to_read)){
printf("%s", line);
line_count++;
}
else{
continue;
}
}while (c != NULL);
与此:
do{
c = fgets(line, length, fileequals);
if (c != NULL && (line_count >= num_lines - num_rows_to_read)){
printf("%s", line);
}
line_count++;
}while (c != NULL);