C 为什么我没有从中得到任何输出

C 为什么我没有从中得到任何输出,c,string,pointers,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 = string

我必须创建一个函数,返回指向子字符串的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;
}
char*get\u子字符串(char*start,char*end)
int main(int argc,char*argv[])
{
char stringtest[]=“ABCDE”;
char*pos1=stringtest;
char*pos2=stringtest+3;
char*test=get_子字符串(pos1,pos2);
printf(“%s”,测试);
返回0;
}
char*get_子字符串(char*start,char*end)
{
int i=&end-&start;
char*buffer=(char*)malloc(sizeof(char)*100);
对于(int x=0;x

非常感谢您的帮助:)

缓冲区[10]中提供分号


char缓冲区[10]

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

的操作来使用字符串中字符的地址。显示任何错误?您正在将
sringtest[0]
的内容分配给
pos1
,将
stringtest[3]
的内容分配给
pos2
。你真正想要的是
char*pos1=stringtest
char*pos2=stringtest+3
。如果你接着打印
pos1
pos2
,你会看到它们分别是
A
D
。@C.evenhui你完全错了;首先,C不支持<代码>新< /Cord>操作符,其次,你混淆C++和C语法;在C(++)中,如果需要数组,可以将括号放在名称后面,而不是类型:
char arr[10]
,而不是
char[10]arr
@brnpls:请不要使用注释中的修复来更新问题中的代码。你最终不仅给出了评论和答案,还有你的问题,毫无意义。这应该是一个评论<代码>:
是冒号。你可能是想说
是分号。如果没有,编译器将发出错误,代码将无法编译。