c打印char指针,当函数值改变时,在main中

时间:2012-12-15 00:23:24

标签: c function pointers parameters

主要

...
            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 codechange %s删除到%c它会工作得很好......

3 个答案:

答案 0 :(得分:2)

char coords;

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

coordschar而不是字符串。 %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;
}