在C中使用不可打印字符作为空字符可以吗

在C中使用不可打印字符作为空字符可以吗,c,printf,C,Printf,我想在C中使用printf打印字符或什么都不打印 假设我有一个结构,其中索引是可打印字符或6(不可打印字符) 这将导致打印“x”时没有任何空间。但是这条路看起来很黑,所以 像这样在C语言中使用不可打印字符可以吗?如果可以,哪一个最好? 我真的不想用if语句分割printf,也不想在第一个字符后面有额外的空间。就像在注释中所说的那样,如果您不想使用if语句或空格来像这样使用“\0”,则更可靠的解决方案是: struct indexed { char name; char index

我想在C中使用printf打印字符或什么都不打印

假设我有一个结构,其中索引是可打印字符或6(不可打印字符)

这将导致打印“x”时没有任何空间。但是这条路看起来很黑,所以

像这样在C语言中使用不可打印字符可以吗?如果可以,哪一个最好?


我真的不想用if语句分割printf,也不想在第一个字符后面有额外的空间。

就像在注释中所说的那样,如果您不想使用if语句或空格来像这样使用“\0”,则更可靠的解决方案是:

struct indexed {
    char name;
    char index;
};

struct indexed item = { 'x', '\0' };

char temp[] = { item.name, item.index, '\0' };
printf("Indexed char '%s' is worth printing", temp);

我不推荐。如果你不想打印一个字符,那么就不要打印它。这看起来像是对操作系统的一种干预,这可能会导致奇怪的副作用所以,不,我不推荐。你可以打印一个只有一个字符的字符串,也可以打印一个空字符串,虽然效果相同,但还是可靠的。这个想法更像是:它们不是可打印的字符,有些已经过时了,为什么不这样使用呢。谢谢你们的评论,我将创建并接受答案
struct indexed {
    char name;
    char index;
};

struct indexed item = { 'x', '\0' };

char temp[] = { item.name, item.index, '\0' };
printf("Indexed char '%s' is worth printing", temp);