Странные символы появляются после записи в текстовый файл - PullRequest
1 голос
/ 28 февраля 2011

В настоящее время я пытаюсь прочитать файл, добавить дополнительную обратную косую черту (), если она находит обратную косую черту, и записать ее в другой файл.Проблема в том, что внутри path.txt печатаются странные символы.Я подозреваю, что space символы из файла logdata являются корнем этой проблемы.Нужен совет, как решить эту проблему.

Вот код:

// read a file
char str[256];
fstream file_op("C:\\logdata",ios::in);
file_op >> str;
file_op.close();

// finds the slash, and add additional slash
char newPath[MAX_PATH];
int newCount = 0;
for(int i=0; i < strlen(str); i++)
{
 if(str[i] == '\\')
   {
    newPath[newCount++] = str[i];
   }
   newPath[newCount++] = str[i];
}


// write it to a different file
ofstream out("c:\\path.txt", ios::out | ios::binary);
out.write(newPath, strlen(newPath));
out.close();

Ответы [ 2 ]

3 голосов
/ 28 февраля 2011

Каждая символьная строка в C должна заканчиваться символом \ 0.Это показатель того, что строка заканчивается прямо там.

Ваш массив newPath, после итерации цикла for не завершен правильно.Вероятно, это заканчивается где-то позже, где \ 0 случайно появляется в памяти.

Попробуйте сделать следующее сразу после выхода из цикла for:

newPath[newCount]=0;

Более безопасный способ использованиястрок в C ++, должен использовать std :: string класс поверх простых массивов символов.

0 голосов
/ 28 февраля 2011

Попробуйте поместить строковый терминатор в буфер после цикла:
newPath [newCount] = 0;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...