C:snprintf不接受\ n进行GUI显示。需要建议

时间:2013-01-07 11:35:56

标签: c linux printf

我需要将最后一个有效字符设为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)

1 个答案:

答案 0 :(得分:3)

许多GUI系统无法正确显示newline等特殊字符。要么不在sprintf调用中添加换行符,要么手动将其删除:

/* Remove the last character from the string */
cursStr[strlen(cursStr) - 1] = '\0';