BWH*_*zel 0 c pointers c-strings
我正在尝试创建一个将返回int的C函数,但在此过程中将填充作为变量传入的char*.我正在尝试的一个基本示例是:
int myMethod(int input, char* output, int outMaxLen) {
int outValue = input * 5;
if (out < 10) strcat(output, "A small number");
else if (out < 20) strcat(output, "A medium number");
else strcat(output, "A large number");
}
Run Code Online (Sandbox Code Playgroud)
在main.c中:
char* myMethodOutput;
int myMethodInt = myMethod(2, myMethodOutput, 15);
printf("%d %s", myMethodInt, myMethodOutput);
Run Code Online (Sandbox Code Playgroud)
运行时,整数显示在屏幕上,但文本不显示.
outMaxLen变量用于检查char*参数以确保它足够大以容纳输出字符串.
和strcat()一样,我尝试过strcpy()和strncpy(),但都无济于事.strcat()不向控制台显示任何文本,strcpy()和strncpy()使用消息EXC_BAD_ACCESS调用调试器.
我已经使用strcpy_s函数在Windows API中成功地管理了这个,但我现在正在尝试UNIX框.我可能错过了一些非常基本的东西!
您需要先为指针分配一些内存,否则您只需要写入内存中的某个随机区域.例如:
char *myMethodOutput = malloc(256);
/* ... etc ... */
free(myMethodOutput);
Run Code Online (Sandbox Code Playgroud)