所以我正在制作一个类似于SubStr的函数。这是一个赋值,所以我无法使用实际函数来执行此操作。到目前为止,我已经创建了一个函数来获取字符串,然后获取所需的子字符串。我的问题是返回子字符串。当我Substring[b] = AString[b];
子字符串时,在函数中是空的,但是如果我从函数内部cout
,我会得到所需的子字符串。那么我的代码有什么问题呢?
这是一个工作演示:http://ideone.com/4f5IpA
#include <iostream>
using namespace std;
void subsec(char AString[], char Substring[], int start, int length);
int main() {
char someString[] = "abcdefg";
char someSubString[] = "";
subsec(someString, someSubString, 1, 3);
cout << someSubString << endl;
return 0;
}
void subsec(char AString[], char Substring[], int start, int length) {
for (int b = start; b <= length; b++) {
Substring[b] = AString[b];
}
}
也许这符合您的要求? 很难说,因为您的初始实现更多地使用 length 参数作为结束位置。
#include <iostream>
using namespace std;
void subsec(char AString[], char Substring[], int start, int length)
{
const int end = start + length;
int pos = 0;
for(int b = start; b < end; ++b)
{
Substring[pos++] = AString[b];
}
Substring[pos] = 0;
}
int main()
{
char someString[50] = "abcdefghijklmnopqrstuvwxyz";
char someSubString[50];
subsec(someString, someSubString, 13, 10);
cout << someSubString << endl;
return 0;
}
代码有几个问题:
1) 字符数组someSubString
的大小为 1,无法容纳子字符串。
2)subsec
未正确实现,应从索引0复制到Substring
。还要记住在子字符串的末尾添加