为什么我没有得到这个输出

时间:2015-05-17 05:26:40

标签: c string pointers

我必须创建一个返回指向子字符串的char指针的函数。子字符串由两个指针给出,一个用于子字符串的开头,另一个用于结束。此子字符串小于start指向的原始字符串。

char* get_substring(char* start, char* end)
int main(int argc, char* argv[])
{
    char stringtest[] = "ABCDE";
    char* pos1 = stringtest;
    char* pos2 = stringtest+3;
    char* test = get_substring(pos1, pos2);
    printf("%s", test);
    return 0;
}


char* get_substring(char* start, char* end)
{
    int i = &end - &start;
    char* buffer = (char *)malloc(sizeof(char) * 100);
    for(int x=0; x < i; x++)
    {
        *(buffer+x) = *(start+x);
    }
    *(buffer+i) = '\0';
    return buffer;
}

任何帮助非常感谢:)

2 个答案:

答案 0 :(得分:2)

执行char pos1 = stringtest[0];时,您将第一个字符复制到新变量pos1中。当您获取pos1的地址时,您正在使用该新变量的地址和副本。您需要做的是通过执行&stringtest[0]

之类的操作来使用字符串中字符的地址

答案 1 :(得分:0)

buffer[10]

中提供分号

char buffer[10];