Был когда-то такой антиотладочный трюк в x86, когда инструкция перезаписывала следующую прямо за ней. При реальном исполнении следующая инструкция была бы уже в кэше, и перезапись не дала бы эффекта.
Проблема в том, что при проверке через обычный if и else выдаётся "Не удалось открыть файл".
if ((f = fopen(path, "ab+"); { printf ("Не удалось открыть файл"); }
проверка, конечно, устраняет появление ошибки, однако никак не решает проблему с вводом данных
в Makefile тупо прописана команда "gcc"?
обработка, видимо, зашита в стандартной библиотеке
stty -icanon -isig
можно полностью отключить интерпретацию ^C/^D/^Z/…ENABLE_PROCESSED_INPUT
в описании которого есть упоминание ^C и "других управляющих символов", но не написано, входит ли туда ^Z. Если во втором случае MSVC возвращает EOF, но заполняет — поведение некузявое, но допустимое.
The fscanf function returns the value of the macro EOF if an input failure occurs before any conversion. Otherwise, the function returns the number of input items assigned
сколько тогда нужно выделять под возможный EOF места?
getchar возвращает int
getchar
сравнивается с EOF
, его надо хранить в переменной типа int
.И получается "c" нужно инициализировать явно, то есть:
char c[32]="_\0"
, где _ —любой символ, а 32 байта нужно для предотвращения проблем с EOF
?
char c1[2] = {c, 0};
strcat(word, c1);
Сделал "c" массивом в 2 символа и теперь всё заработало:
c[1]
не инициализирован, то что там оказался 0 -- чистая случайность.getchar
возвращает int
а не char
, и значение EOF
может не помещаться в char
. char c;
…
strcat(word, &c);
} else {
char c1[2] = {c, 0};
strcat(word, c1);
}
Pavel K, правильнее было бы сказать, что часы нужны в UTC+0.
Уточни "округлить" заодно: 00:00:01 -> 00:00:00, 00:00:30 -> 00:01:00 ?
2 января -> 1 января, 17 января -> 1 февраля?