写入文本文件后会出现奇怪的字符

时间:2011-02-28 10:55:30

标签: c++ visual-c++

我目前正在尝试读取一个文件,如果找到反斜杠则添加额外的反斜杠(),并将其写入另一个文件。问题是,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 个答案:

答案 0 :(得分:3)

C中的每个字符串都必须以字符\ 0结尾。这是一个指示符,字符串就在那里结束。

您的newPath数组在迭代完for循环后未正确结束。它可能会在某个地方结束,其中\ 0偶然出现在内存中。

退出for循环后尝试执行以下操作:

newPath[newCount]=0;

在C ++中使用字符串的一种更安全的方法是在普通字符数组上使用std::string类。

答案 1 :(得分:0)

在循环之后尝试将字符串终止符放在缓冲区中:
newPath [newCount] = 0;