如何定义具有正确宽度或可变宽度的字符指针?
我的场景如下..
void processRa(int _raCount, char *raFile)
{
char *command; // How to correctly define this variable ?
sprintf(command, "somecomm -r %s -N%d-%d ", raFile, (_raCount - 1), (_raCount - 1));
system(command);
}
在这个场景中,我定义了一个字符指针command
。 command
的大小取决于函数传递的变量 raFile
和下一行的命令。
最佳答案
C 中的
char*
没有相关存储。这与 fortran 等语言不同,后者的字符类型代表固定大小的字符串。您要么必须使用 char command[size+1]
之类的方法定义字符 array,要么使用 malloc()
进行分配(不要忘记在处理完字符串后调用 free()
)。
棘手的部分是正确计算所需的长度。然而,在 POSIX-2008 标准中,已经有一个名为 asprintf()
的函数,它正是您所需要的:它将 sprintf()
的函数与使用 malloc()
分配足够的内存(同样,不要忘记在处理完字符串后调用 free()
)。用法如下:
void processRa(int _raCount, char *raFile) {
char *command; // How to correctly define this variable ?
asprintf(&command, "somecomm -r %s -N%d-%d ", raFile, (_raCount - 1), (_raCount - 1));
system(command);
free(command);
}
关于c - 定义可变大小的 CHAR 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22217565/