C 为什么我没有从中得到任何输出
我必须创建一个函数,返回指向子字符串的char指针。子字符串由两个指针提供给我们,一个指针用于子字符串的开始,另一个指针用于结束。此子字符串小于start指向的原始字符串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* 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:请不要使用注释中的修复来更新问题中的代码。你最终不仅给出了评论和答案,还有你的问题,毫无意义。这应该是一个评论<代码>:
是冒号。你可能是想说代码>是分号。如果没有,编译器将发出错误,代码将无法编译。