我是 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/