gpt4 book ai didi

C 中 if 语句中的命令无论语句是否为真都会发生

转载 作者:太空宇宙 更新时间:2023-11-04 07:22:39 24 4
gpt4 key购买 nike

对于我正在编写的程序,我需要逐行读取文件并打印出文件中最长的一行,以及该行的长度以及文件中的总行数。

我有这个:

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 将始终指向当前评估的行。

关于C 中 if 语句中的命令无论语句是否为真都会发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20436481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com