テキスト行のセットを読み取り、最も長く出力する問題を解決しています。この問題は、K&Rの「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');
}