问:我正在尝试将字符数组移动多个指定位置。
例如,如果n = 2,我想要我的数组“ Hello”。成为“ llo”。我尝试了以下方法:
memmove(array, array+2, sizeof array - sizeof *array);
但这是行不通的。如果:
char *array = "Hello."
我希望数组成为“ llo”。
任何帮助,将不胜感激。我不知道如何做这么简单的事情。
答:char *array = "Hello.";
那么该变量array实际上不是数组。它是指向包含文字字符串的常量数组的第一个元素的指针。
由于文字字符串是常量,因此无法对其进行修改,并且无论如何尝试都会导致未定义的行为。实际上,您的编译器应该已经对此发出警告(请听您的编译器,并将所有消息(甚至警告)视为必须修复的错误)。
正确的定义是
const char *pointer = "Hello.";
要解决您的问题,请使用实际的数组:
char array[] = "Hello.";