1

最後の有効な文字を NUL として配置する必要があり'\0'ます。

char配列がありますchar cursStr[128]; 私の意図は次のとおりです。cursStr [lastCharacter where ends] = '\0'

以下は、この配列に値が入力される方法のコード スニペットです。

snprintf(num_range, sizeof(num_range), "%d-%d", devIndex, devIndex+127);
snprintf(dev_range, sizeof(dev_range), "%s%d...%s%d", devices[devPointer].name, 1, devices[devPointer].name, 128);
sprintf(cursStr, "%-7s  %-25.50s  %c%-30.30s  %5Ld%11s\n",
            num_range, dev_range,' ', "Empty", (var64)0, "GPT");

私がこれを行っている理由は、GUI で印刷することにより、最後にジャンク文字が表示されるためです。ただし、コンソールでの印刷は問題なく印刷されます。この配列に対して 0を実行しようとしましたが、memset役に立ちません。

これは、GUI とコンソールに出力される方法です。

             if (cursLine) {
                    TVdisplayText(cursLine, cursStr, &usedLines); // GUI
                    cursLine += usedLines;
             } else {
                    printf("%s\n",cursStr); // console
             }

使用する GUI ライブラリは TVision (Turbo Vision) です。

4

1 に答える 1

3

多くの GUI システムでは、改行などの特殊文字を正しく表示できません。呼び出しに改行を追加しないかsprintf、手動で削除してください。

/* Remove the last character from the string */
cursStr[strlen(cursStr) - 1] = '\0';
于 2013-01-07T12:09:59.433 に答える