1. ホーム
  2. c

[解決済み] c関数内の「計算された値が使用されていない」ポインタ

2022-02-18 21:01:37

質問

文字列(単語文)を要求された長さに短縮する関数を書きました。文の切れ目がたまたま一語の真ん中に来ないようにしたい。そこで、私はスペースに到達するまでn文字後ろにスキップし、そこで文の文字列をカットしています。 私の問題は実際には問題ではなく、私の関数をコンパイルすると、"warning: value computed is not used"という警告が表示されます(コード内のコメント行を参照)。しかし、この関数は期待通りに動作します。 私は目が悪いのか、それともプロジェクトに長く居座りすぎているのか、実はこの警告が理解できないのです。どなたか、この関数の欠陥を指摘していただけませんか?


char *
str_cut(char *s, size_t len) {
    char *p = NULL;
    int n = 3;

    p = s + len;
    if (p < (s + strlen (s))) {
        /*
         * do not cut string in middle of a word.
         * if cut-point is no space, reducue string until space reached ...
         */
        if (*p != ' ')
            while (*p != ' ')
                *p--;   // TODO: triggers warning: warning: value computed is not used

        /* add space for dots and extra space, terminate string */
        p += n + 1;
        *p = '\0';

        /* append dots */
        while (n-- && (--p > s))
            *p = '.';
    }
    return s;
}


開発機のコンパイラは "gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu4)" を使用しています。

解決方法を教えてください。

この警告は * (参照解除) -- 参照解除された値をどこにも使っていない。ただ、それを作るだけです。

p--;

と表示され、警告が消えるはずです。