对于我正在编写的程序,我需要逐行读取文件并打印出文件中最长的一行,以及该行的长度以及文件中的总行数。
我有这个:
char line[100];
char* longLine;
int count, longestLine, temp;
count=0;
longestLine=0;
while(fgets(line,100,inFile) != NULL) {
temp=strlen(line);
if(temp > longestLine) {
longLine=line;
longestLine=temp;
}
count++;
}
printf("Longest line: %sLength of longest line: %d characters\nTotal number of lines: %d\n",longLine, longestLine, count);
longestLine 和 count 打印正确,但无论如何,longLine 总是打印出文件的最后一行而不是最长的一行。使用 print 语句,我确定 while 循环中的 if 语句仅在找到新的最长行时才被调用,但无论如何 longLine 都会发生变化。谁能告诉我我做错了什么?谢谢!
问题是 longLine 是一个指针。您将进入 if,然后将 longLine 设置为指向线...在下一个 while 开始时已更改。我怀疑您打算做的是使用 strcpy 将 line 的内容复制到 longLine 中,否则,每次都通过循环。 longLine 将始终指向当前评估的行。
我是一名优秀的程序员,十分优秀!