我如何(m)在另一个函数中分配字符串?我已经尝试过2种方式(在代码中只是示例 - 我不会用argv做).
void someFunction(char* string, char** argv) {
string = (char*)malloc(strlen(argv[2]) + 1);
strcpy(string,argv[2]);
// string[strlen(argv[2]) + 1] = '\0' //should I do this now?
printf("%s",string); //outputs string (works fine)
}
int main(int argc, char** argv) {
char *string;
char *string2;
someFunction(string,argv);
printf("%s",string); //outputs (null)
free(string);
someFunction(&*string2,argv);
printf("%s",string2); //outputs (null)
free(string2);
}
Run Code Online (Sandbox Code Playgroud)
我想在main中使用"string",但是在不同的函数中使用mallocate.
谢谢!
这是两个例子:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
void alloc1 (char **new_string, char *text) {
*new_string = malloc(strlen(text)+1);
strcpy (*new_string, text);
}
char * alloc2(char *text) {
char *new_string = malloc(strlen(text)+1);
strcpy (new_string, text);
return new_string;
}
int
main (int argc, char *argv[]) {
char *s;
/* Make sure we entered a command line argument */
if (argc < 2) {
printf ("USAGE: myprog SOMETHING\n");
return 1;
}
alloc1(&s, argv[1]);
printf ("alloc1: s=%s\n", s);
free (s);
s = alloc2 (argv[1]);
printf ("alloc2: s=%s\n", s);
free (s);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
第一个示例传递指针指针:main指定指针; 函数将空间分配给指针; 指针本身通过引用传递.
第二个示例类似,除了函数返回指针而不是更改引用.
如果你只是初始化一个指针,第一个是"更清洁"; 如果要在同一函数中返回多个不同的值,则第二个非常有用.
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |