1

主要

...
            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と正常に機能します...

4

3 に答える 3

2
char coords;

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

coordsはでcharあり、文字列ではありません。%s変換仕様には、ではchar *なく引数が必要charです。タイプのオブジェクトを渡すことcharは未定義の動作です。

于 2012-12-15T00:24:56.127 に答える
1

%sC文字列のフォーマット指定子です。あなたはそれを単純に渡している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 に答える