最後の文字を印刷するために、コードにいくつかの変更を加えました。サンプルとしてtest.cを次に示します。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE * f;
char * f_text = "temp.txt";
f = fopen ( f_text, "r" );
if (f )
{
if (fseek( f, -2, SEEK_END ) == 0 )
{
char last[2] = {0};
printf("Got here.\n");
last[0] = fgetc( f );
printf("%s\n", last);
}
}
return 0;
}
これがコマンドラインに表示されるtemp.txtです。
octopusgrabbus@steamboy:~/scratch$ cat temp.txt
This is a test.
octopusgrabbus@steamboy:~/scratch$
私はあなたのfseekを最後から2つを探すように変更したので、テストは期間を印刷します。別の答えが示すように、私はfgetsの代わりにfgetcを使用しました。これは、完全な文字列ではなく、個々の文字を探していたためです。
また、lastをlast [2]に変更し、ゼロに初期化したので、デモの目的で最後の文字をゼロで終了する文字列として扱うことができました。