创建局部使用指针在C.使用指针
给定字符串可以说我有以下字符串:
char string[] = "hellomynameisbob";
,我想招呼出来的:
接口:
char * partial(int i, int j, char *string){
...
}
哪里j
是我想要我的话,在启动和i
是我想让我的话结束的地方。 相当于在Python是:
string = "hellomynameisbob"
print string[0:5]
创建局部使用指针在C.使用指针
给定字符串可以说我有以下字符串:
char string[] = "hellomynameisbob";
,我想招呼出来的:
接口:
char * partial(int i, int j, char *string){
...
}
哪里j
是我想要我的话,在启动和i
是我想让我的话结束的地方。 相当于在Python是:
string = "hellomynameisbob"
print string[0:5]
char *partial(int a, int b, char *source) {
char *buffer = calloc(sizeof(char), strlen(source)+1); //Allocate new buffer
strcpy(buffer, source+a); //Copy the string, starting at 'a'
buffer[b-a] = 0; //Insert the terminating null character
return buffer; //Don't forget to free it!
}
你可以尝试这样的
char string[] = "hellomynameisbob";
char buffer[7];
snprintf(buffer,6,"%s", string);
printf("buffer: %s\n", buffer);
的partial
功能更好地与一个参数指向要复制的部分字符串的缓冲区写入。否则,它将不得不动态分配内存,调用者将不得不释放它,这是令人困惑的。
// buf shall have size at least j - i + 2
char* partial(int i, int j, const char* string, char* buf) {
return strncpy(buf, string + i, j - i + 2);
}
尝试以下操作:
char * partial(int i, int j, char *str)
{
char * result = new char[j+1];
snprintf (result, j+1, str + i, sizeof(result));
return result;
}
int main()
{
char * result = partial(0, 5, "hellomynameisbob");
std::cout << "Result=" << result << std::endl;
delete result;
}
输出将是 “你好”
memcpy(buf, string+i, j-i+1);
难道这里面的部分功能
// assuming j is starting point and i is end point
char * partial(int i, int j, char *string){
char *pstring;
pstring = malloc((i-j)*sizeof(char)+1);
memcpy(pstring,string+i,(i-j))
pstring[i] = '\0';
return pstring;
}
我需要AB le保存变量并使用它。它不仅仅用于打印。我试图玩这个和sprintf。但结果不起作用。 – Cripto
@Cripto编辑答案 –