2015-05-27 3 views
-4

У меня есть код, который записывает данные в текстовый файл. Моя проблема по какой-то нечетной причине, она пишет по-японски! Очевидно, я не могу читать по-японски, но как я могу записать его в обычный текстовый формат. Притворите данные [i]. Имя и пароль имеют значение char [10]. И они уже пишут в файле, проблема языка он пишет.C++ Почему это написано на японском языке?

// variables 
FILE *streaming; 
const int amount = 5; 
profile data[5]; 

if (!(streaming = fopen("Profiles.txt", "r"))) 
    { 
     for (int i = 0; i < amount; i++) 
     { 
      data[i].name[0] = 0; 
      data[i].password[0] = 0; 
     } 
     streaming = fopen("Profiles.txt", "wb"); 
     fwrite (data, sizeof(data), 1 , streaming); 
     fclose (streaming); 
    } 
+1

Пожалуйста, верните это скриншотом ... И покажите нам, какой профиль сделан из – Marged

+1

Я бы поставил на него просто случайные байты в конце 'password' и' name', так как вы пишете все свои данные, установка их первого байта на '\ 0' здесь не помогает. Вероятно, это исчезнет, ​​если вы полностью обнулите его. –

+0

http://postimg.org/image/upqayryr3/ – Bryan

ответ

3

data[i].name[0] = 0; устанавливает первый элемент того, что я полагаю, что массив символов в 0. Это абсолютно ничего не делает с остальной частью массив символов. Какое бы случайное дерьмо не было в остальной части массива символов, все еще существует.

fwrite (data, sizeof(data), 1 , streaming); будет бездумно написать все внутри массива профильных структур, в том числе все из случайной гречихи после первого элемента из name и password массивов внутри каждого профиля.

Чтобы полностью очистить профили, предполагая, что нет ничего в профиль, который будет плохо реагировать на MemSet, попробуйте

memset(data, 0, sizeof(data));

Не беспокоить с просьбой к врачу. Опубликуйте свою структуру профиля, и мы точно будем знать, подходит ли вам memset.

+0

Ваша первая часть решила это для меня, я приму свой ответ, как только это позволит мне. – Bryan

+0

Один быстрый вопрос, как я могу поместить «#» после данных [i] .password. – Bryan

+0

@Bryan Сразу после последнего действительного символа или после всего поля? – user4581301

Смежные вопросы