gpt4 book ai didi

c - 指针和函数

转载 作者:行者123 更新时间:2023-11-30 21:06:13 24 4
gpt4 key购买 nike

我是 C 编程新手。我从 RTKLIB 编写了这段代码图书馆。

extern void satno2id(int sat, char *id)
{
int prn;

switch (satsys(sat, &prn)) {
case SYS_GPS: sprintf(id,"G%02d",prn-MINPRNGPS+1); return;
case SYS_GLO: sprintf(id,"R%02d",prn-MINPRNGLO+1); return;
case SYS_GAL: sprintf(id,"E%02d",prn-MINPRNGAL+1); return;
case SYS_BDS: sprintf(id,"C%02d",prn-MINPRNBDS+1); return;
}
strcpy(id, "");
}

在此函数中,第一个参数是输入,第二个参数是输出。现在的问题是如何获取 main() 函数中第二个参数的值?我已经编写了这段代码,但出现错误。这是怎么回事?

int main(){
char *id;
satno2id(68, &id);
printf("satellite number is %s", *id);
}

最佳答案

在 C 语言中,数组的名称降级为指向该数组第一个元素的指针。

函数中的id需要一个指向字符数组(字符串)第一个元素的指针。这是显而易见的,因为 satno2id() 中使用了用于写入字符数组的 sprintf() 函数。

因此发送一个 char 数组,例如

char id[4];
satno2id(68, id);

我将数组的大小设置为 4,因为 satno2() 似乎正在写入长度为 3 的字符串。额外的字节用于存储 \0终结者。

关于c - 指针和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50077129/

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