需要帮助使用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 "
答案 0 :(得分:5)
字符串以'\0'
字符
所以只需在for循环后添加
command[counter]=0;
(退出for循环时,counter
的值将“指向”command
变量中最后一个字符的位置
答案 1 :(得分:3)
您的代码运行正常:
输出:
这就是我想要的 这就是我想要的
编辑:话虽如此,您需要初始化输出缓冲区:
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 ++;
}
尝试这样的事情......但添加控制以确保不要激活缓冲区/命令维度!