我正在尝试使用以下C ++代码在Linux上使用Vi编辑我自己的文件。我试图使用字符数组命名文件,但是当我尝试从字符串复制到动态字符数组时,我在数组的末尾得到奇怪的字符。这是什么原因?我该怎么办呢?对不起它没有让我发布图片所以我复制了我在屏幕上的东西并粘贴了它 谢谢
newPath[0] = 'v';
newPath[1] = 'i';
newPath[2] = ' ';
for(int i = 0 ; i < fileName.length(); i++)
{
stringLenght =3 + i;
newPath[stringLenght] = (char)fileName[i];
}
cout<<newPath<<" length:"<<fileName.length()<<endl;
Files are on current directory are listing below;
main.cpp
a.cpp
a.cpp.#h???
Which file do you want to edit?: a.cpp
location: . Locationlength:0
vi a.cpp.#�{� length:5
答案 0 :(得分:1)
std::cout.operator<<(char*)
(您的char[]
数组衰减到char*
)使用\0
作为终结符。看来你并没有附加那个null。
与here几乎相同的问题。
一个简单的解决方案是手动将\0
添加到char数组的末尾。