gpt4 book ai didi

c - 定义可变大小的 CHAR 指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:42 26 4
gpt4 key购买 nike

如何定义具有正确宽度或可变宽度的字符指针?

我的场景如下..

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);
}

在这个场景中,我定义了一个字符指针commandcommand 的大小取决于函数传递的变量 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com