如何定义具有正确宽度或可变宽度的字符指针?
我的设想如下。。
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);
}
在这个场景中,我定义了一个char指针
command
。command
的大小取决于函数传递的变量raFile
和下一行的命令。 最佳答案
char*
在C中没有相关存储。这与fortran等语言不同,fortran中的字符类型表示固定大小的字符串。您要么使用char command[size+1]
之类的东西定义一个字符数组,要么使用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/