Visual C ++将char数组复制到char数组中

时间:2011-06-03 17:44:34

标签: c++ arrays

需要帮助使用for循环将数组对象复制到临时数组对象(请参阅下面的代码+注释).....提前感谢!!!!

    int counter;
    char buffer[] = "this is what i want 0 ignore the rest after the zero"; //
    char command[sizeof(buffer)];

    for ( counter = 0; counter < sizeof(buffer); counter++ ){
        if ( buffer[counter] == '0' ){      
            break; // Exit loop (Should Exit)
        }
        command[counter] = buffer[counter]; // Copy array object into new array
        printf("%c",command[counter]);
    }
    printf("\n",NULL);
    printf("%s\n",command); // However when I print it contains the whole array this shouldnt be is should only contain "this is what i want "

4 个答案:

答案 0 :(得分:5)

字符串以'\0'字符

终止

所以只需在for循环后添加

command[counter]=0;

(退出for循环时,counter的值将“指向”command变量中最后一个字符的位置

答案 1 :(得分:3)

http://ideone.com/haCBP

您的代码运行正常:

  

输出:
  这就是我想要的   这就是我想要的

编辑:话虽如此,您需要初始化输出缓冲区:

char command[sizeof(buffer)]={}; // now the string will be null-termiated
                                 // no matter where the copy ends

答案 2 :(得分:0)

有一种更简单的方法来完成这项工作:

sscanf(buffer, "%[^0]", command);

这会复制正确的数据并确保其正确终止,一次性(合理)简单操作。

注意,在C ++中,您可能希望使用std::string而不是NUL终止的char数组来处理这种情况。

答案 3 :(得分:-1)

counter = 0;
while (buffer[counter] != '0'){
command[counter] = buffer[counter];
counter ++;
}

尝试这样的事情......但添加控制以确保不要激活缓冲区/命令维度!