【发布时间】:2016-01-28 01:39:19
【问题描述】:
我需要编写一个程序,提示用户输入一个字符串,然后确定字符串的中间位置,并生成一个新的字符串,将字符串的两半交换,然后输出结果。
目前为止
int main(void) {
char *string = NULL;
char temp[1000];
cout << "Please enter a string" << endl;
cin.getline(temp, 999);
int length = strlen(temp);
string = new char[length];
strcpy(string,temp);
length = length / 2;
return EXIT_SUCCESS;
}
它接收字符串并存储它。我只需要一种将后半部分移动到新数组的方法,我知道我需要使用 strcpy() 但我不知道如何正确引用数组的那部分。
【问题讨论】:
-
看看strncpy。但是,您应该尝试改用
std::string和标准算法。 -
有没有办法让 strncpy 在 n 之后开始获取数组?还是只会在 n 之前执行?
-
在开始弄清楚算法之前,您可能需要修复所示代码中的明显错误,该错误将导致未定义的行为、内存损坏和随机崩溃(提示:strlen() 不会计算 strcpy() 添加的尾随 '\0')。
-
想想什么是数组。它衰减为一个指针,因此您可以递增指针以指向数组的中间。
-
@Tremors 您可以使用
&string[n]从n开始复制。