我正在解决一个读取一组文本行并打印最长的问题。问题来自K&R “The C 编程语言”第 1.9 节。这本书提供了一个解决方案,但我试图以自己的方式解决它。下面的代码可以工作,但在我开始工作之前,我遇到了一个问题,longestStr[i++] = tmpStr[j++]
因为我之前使用过的线路longestStr[i++] = tmpStr[i++]
认为i
一旦分配完成就会增加。但事实并非如此。这是后缀运算符通常的工作方式吗?
#include <stdio.h>
#define MAXLINE 100
main()
{
int lineLength = 0, longestLine = 0;
int c, i, j;
char longestStr[MAXLINE];
char tmpStr[MAXLINE];
while((c = getchar()) != EOF)
{
tmpStr[lineLength++] = c;
if(c == '\n')
{
if( lineLength > longestLine)
{
longestLine = lineLength;
i = 0, j = 0;
while(i < lineLength)
{
longestStr[i++] = tmpStr[j++]; // I tried longestStr[i++] = tmpStr[i++] but it gives wrong result
}
}
lineLength = 0;
}
}
printf("Longest line is - %d long\n", longestLine-1);
for(i = 0; i < longestLine-1; i++)
printf("%c", longestStr[i]);
putchar('\n');
}