我目前正在尝试读取一个文件,如果找到反斜杠则添加额外的反斜杠(),并将其写入另一个文件。问题是,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();
答案 0 :(得分:3)
C中的每个字符串都必须以字符\ 0结尾。这是一个指示符,字符串就在那里结束。
您的newPath
数组在迭代完for循环后未正确结束。它可能会在某个地方结束,其中\ 0偶然出现在内存中。
退出for循环后尝试执行以下操作:
newPath[newCount]=0;
在C ++中使用字符串的一种更安全的方法是在普通字符数组上使用std::string类。
答案 1 :(得分:0)
在循环之后尝试将字符串终止符放在缓冲区中:
newPath [newCount] = 0;