c++ - 字符数组问题

标签 c++ arrays linux char

<分区>

我正在尝试使用以下 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

最佳答案

std::cout.operator<<(char*) (您的 char[] 数组衰减为 char* )使用 \0作为它的终结者。不过,您似乎没有附加那个 null 。

here 几乎相同的问题.

一个简单的解决方案是手动添加 \0到你的字符数组的末尾。

关于c++ - 字符数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20296083/

相关文章:

c++ - IPC_RMID 不适用于使用 C++ 的 Linux

c++ - 在包含 OR 运算的 IF 语句中首先计算哪个 bool 表达式?

c++ - 计算角度/曲率?

c - 不使用 [ 或 ] 查找数组中元素的总和

java - 拼字游戏类型

linux - 使用 While 和 IF 进行验证

c++ - 我可以在命令缓冲区中多次记录 vkCmdPipelineBarrier 吗?

c++ - 测试基于挂钟时间的算法

c - 如何使用 for 循环在 C 中加载最多 10,000 个数字的数组?

c++ - 我可以在 uclibc linux 上使用 boost 吗?