1

主要的

...
            char coords;
            get_coords(1, &coords);
            printf("{%s}", coords);
...

获取坐标:

void get_coords(int num, char *coords){
    if (num == 1){
        *coords = '0-0';
    }
}

当代码尝试执行 printf 并简单地返回错误时,问题似乎发生了......如果我删除它line of code或者它change %s%c正常工作......

4

3 回答 3

2
char coords;

printf("{%s}", coords);

coords是一个char而不是一个字符串。%s转换规范需要一个char *参数,而不是一个char. 传递一个类型的对象char是未定义的行为。

于 2012-12-15T00:24:56.127 回答
1

%s是 C 字符串的格式说明符。你传递给它一个简单的char.

于 2012-12-15T00:24:47.070 回答
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;
}
于 2012-12-15T00:39:40.657 回答