主要
...
char coords;
get_coords(1, &coords);
printf("{%s}", coords);
...
get_coords:
void get_coords(int num, char *coords){
if (num == 1){
*coords = '0-0';
}
}
问题似乎发生在代码尝试执行printf并返回错误时...如果我将line of code
或change
%s
删除到%c
它会工作得很好......
答案 0 :(得分:2)
char coords;
printf("{%s}", coords);
coords
是char
而不是字符串。 %s
转化规范要求char *
参数,而不是char
。传递char
类型的对象是未定义的行为。
答案 1 :(得分:1)
%s
是C字符串的格式说明符。你传递的是一个简单的char
。
答案 2 :(得分:0)
你想要的可能是这样的(请自己添加错误检查):
#include <stdio.h>
#include <string.h>
void get_coords(int num, char *coords)
{
if (num == 1) {
coords[0] = '0';
coords[1] = '-';
coords[2] = '0';
coords[3] = '\0';
}
}
int main(void)
{
char coords[4];
memset(coords, 0, sizeof(coords));
get_coords(1, coords);
printf("{%s}\n", coords);
return 0;
}