如何避免在c中打印ascii值?

时间:2016-06-02 12:03:43

标签: c arrays string ascii

我想在多维数组中打印X,但是它的ASCII值 反复打印。 Str是一个char数组。这是一段代码:

 for(i = 0; i < n; i++) {
    for(j = 0; j < n; j++) {
        if(str[i][j] == "X") {
            printf("%s\t", 'X'); // ascii value gets printed
        }
        else {
            printf("%d\t", str[i][j]);
        }
    }
    printf("\n");
}

2 个答案:

答案 0 :(得分:2)

您似乎将数据类型char与字符串文字混淆。字符数组str[n][n]的一个元素(假设您是字符数组)是数据类型char的值,而不是字符串文字。

 for(int i = 0; i < n; i++) {
    for(int j = 0; j < n; j++) {
        if(str[i][j] == 'X') {
            printf("%c\t", 'X'); //format tag!
        }
        else {
            printf("%d\t", (int)str[i][j]); 
        }
    }
    printf("\n");
 }

请务必仔细阅读printf()手册页。他们有待研究!

答案 1 :(得分:0)

第一个问题:假设str是字符数组,在行:str[i][j] == "X"中,您将char与字符串文字进行比较,字符串文字以终止null结尾。如果要比较字符串,可以使用strcmp函数。如果您只想要字符,那么您应该使用str[i][j] == 'X'

第二个问题:如果要打印字符,则应使用printf("%c\t", 'X');