如何定义具有正确宽度或可变宽度的字符指针?
我的设想如下。。

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指针commandcommand的大小取决于函数传递的变量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/

10-11 19:41
查看更多