Fwrite — различия между версиями
Материал из Pro-Pawn Wiki
(Новая страница: «{{DISPLAYTITLE:fwrite}} {{Description | Записывает информацию в файл в текстовом виде. }} {{Params|File: handle, const stri…») |
|||
Строка 20: | Строка 20: | ||
{{NotePawnBug | {{NotePawnBug | ||
| Функция неправильно работает с упакованными строками (вместо них в файл записываются мусорные данные). | | Функция неправильно работает с упакованными строками (вместо них в файл записываются мусорные данные). | ||
+ | | При записи неупакованных строк национальные символы (например, символы кириллицы) записываются неправильно - в таких случаях следует записывать строку посимвольно с помощью функции <code>[[fputchar]]()</code> (см. пример ниже). | ||
}} | }} | ||
{{NoteInfo | {{NoteInfo | ||
Строка 31: | Строка 32: | ||
new File: f = fopen("1.txt", io_write); | new File: f = fopen("1.txt", io_write); | ||
fwrite(f, "abcd"); | fwrite(f, "abcd"); | ||
+ | |||
+ | static const text[] = "абвг"; | ||
+ | // fwrite() неправильно записывает символы кириллицы. | ||
+ | // Запишем строку с помощью fputchar(), указав последним | ||
+ | // аргументом false для записи в ASCII вместо UTF-8. | ||
+ | for (new i = 0; text[i] != '\0'; ++i) | ||
+ | fputchar(f, text[i], false); | ||
+ | |||
fclose(f); | fclose(f); | ||
} | } |
Текущая версия на 12:11, 24 июля 2018
Описание:
Записывает информацию в файл в текстовом виде.
Параметры:
(File: handle, const string[]) |
File: handle | Хендл открытого файла. |
const string[] | Строка для записи в файл. |
Возвращаемое значение:
Количество символов, записанных в файл.
Баг Pawn |
Попытка передать функции неправильный хендл (т.е. не возвращённый функциями fopen() или ftemp() , либо уже закрытый с помощью fclose() ) приводит к падению сервера.
|
Функция неправильно работает с упакованными строками (вместо них в файл записываются мусорные данные).
При записи неупакованных строк национальные символы (например, символы кириллицы) записываются неправильно - в таких случаях следует записывать строку посимвольно с помощью функции fputchar() (см. пример ниже).
|
Примечание |
Неупакованные строки записываются в кодировке UTF-8. |
Пример использования:
main()
{
// Создадим пустой файл и запишем в него строку
new File: f = fopen("1.txt", io_write);
fwrite(f, "abcd");
static const text[] = "абвг";
// fwrite() неправильно записывает символы кириллицы.
// Запишем строку с помощью fputchar(), указав последним
// аргументом false для записи в ASCII вместо UTF-8.
for (new i = 0; text[i] != '\0'; ++i)
fputchar(f, text[i], false);
fclose(f);
}
{
// Создадим пустой файл и запишем в него строку
new File: f = fopen("1.txt", io_write);
fwrite(f, "abcd");
static const text[] = "абвг";
// fwrite() неправильно записывает символы кириллицы.
// Запишем строку с помощью fputchar(), указав последним
// аргументом false для записи в ASCII вместо UTF-8.
for (new i = 0; text[i] != '\0'; ++i)
fputchar(f, text[i], false);
fclose(f);
}
См. также: