Ваша программа использует неопределенное поведение.Массив x
не полностью инициализирован, и вы читаете из неинициализированных индексов.Кроме того, вы всегда пишете 20 байтов, независимо от того, что вы читаете от пользователя.
Полагаю, вы используете какой-нибудь текстовый редактор, например Блокнот.Последний имеет ошибки при попытке угадать кодировку.Похоже, что он предполагает, что файл имеет формат UTF16 и отображает 20/2 == 10
символов.
Чтобы решить проблему, сохраните в файле точное количество символов, введенных пользователем.Используйте std::string
, чтобы сделать это проще.
Редактировать: C ++ путь:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
string x;
cout << "enter something\n";
getline(cin, x);
ofstream o("d:/tester.txt");
o << x;
}