#include <stdio.h>
main ()
{
FILE *fs, *ft;
char dest[20];
fs = fopen ("STACKOVERFLOW.txt", "r");
fseek (fs, 0, SEEK_END);
fseek (fs, -3, SEEK_CUR);
fgets (dest, 5, fs);
printf ("dest value is %s ", dest);
}
Мой файл переполнения стека содержит:
«Я ЛЮБЛЮ STACKOVERFLOW».
Я ожидал вывода «LOW» в качестве последних 3 символов, которые я извлекаю.
Но моя программа печатает только «OW».
Что такое правильное поведение?
LOW
. - person Yu Hao   schedule 27.09.2014W
иO
. - person Michael Petch   schedule 27.09.2014fseek(fs, -3, SEEK_CUR)
может оказаться на байте в середине многобайтовой последовательности, например. UTF-8 или ЮНИКОД. С текстовым файлом Windows вы, вероятно, получите только W. - person potrzebie   schedule 27.09.2014ftell()
, четко определены. Другие поиски не являются. - person chux - Reinstate Monica   schedule 27.09.2014