我们如何从函数返回一个字符串?
我刚刚开始学习使用字符串函数和 malloc,基本上,我正在尝试:
ef = 11101111
作为输出。
这是我尝试过的。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
const int MAXWORD = 2;
char hexToBinary(char hex[MAXWORD]);
int main()
{
char hex[MAXWORD] = {'e','f'};
printf("%s = %s\n", hex, hexToBinary(hex));
return 0;
}
char hexToBinary(char hex[MAXWORD])
{
char *hexToBn = malloc( (MAXWORD-1) * sizeof(char) );
char *convertedString = malloc( (MAXWORD-1) * sizeof(char) );
for(int i=0 ; i<MAXWORD ; ++i)
{
if(hex[i] == 'e' || hex[i] == 'E')
{
strcpy(hexToBn, "1110");
}
if(hex[i] == 'f' || hex[i] == 'F')
{
strcpy(hexToBn, "1111");
}
strcat(convertedString, hexToBn);
}
return convertedString;
}
最佳答案
如果您想创建一个返回 C 字符串的函数,请声明它返回 char*
:
char *hexToBinary(char hex[MAXWORD]) {
...
}
这并不理想,因为它可能会造成内存泄漏。事实上,您的代码会泄漏一个字符串,因为您永远不会释放
malloc
中分配的内容。
您应该通过捕获返回值并在完成后调用 free
来修复泄漏,或者使用 buffer+length API 模式:
char *bin = hexToBinary(hex);
printf("%s = %s\n", hex, bin);
free(bin);
替代 API 如下所示:
void hexToBinary(char hex[], char bin[], int len) {
... // Users pass the output buffer bin and its length len
}
关于c - 如何获得返回字符串的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29223545/