2017-08-05 72 views
-5

我想知道如何解決這個printf語句不能打印括號外的字符;帶有控制輸出功能的Printf

printf("[ %c ]\n", display(Room1,5,5)); 

所以,你可以看到我想要返回的字符是%c,我調用的代碼是函數; (此代碼已被編輯建議)

if(Room1[i][j] == blue){ 
      return COLOR_blue "." COLOR_RESET; 
     }   
    return " "; 
} 

因此,如果它等於藍色,它將打印一個藍色'。'否則它只會創建一個空間,但它只是打印到控制檯;

.[ 
    ] 

- 與不要爲藍色,不知道它爲什麼這是我想要的括號

+0

'顯示()'這是什麼回報? %c寫一個字符,所以顯示器應該返回一個字符 - 它不應該打印一個字符 –

+0

@AndersK。顯示器應該返回一個彩色字符進入中間的括號,但是從你所說的我已經明確沒有做到正確 –

+1

@AndersK。對你回來的事情以及你如何使用這種回報有個很好的觀點。你還需要認識到TTY上的轉義序列通常(我總是認爲)不止一個字符。這裏有另一個SO問題可能會有所幫助:[ANSI顏色轉義序列列表](https://stackoverflow.com/questions/4842424/list-of-ansi-color-escape-sequences)。 – Mike

回答

0

您已經打印內部。在函數內部,如果你想返回值使用return語句I.e,不要在函數中做printf而是返回。像返回'。''

+0

好吧,我已將它更改爲「返回COLOR_blue」。「COLOR_RESET;它說」警告:返回使指針中的整數沒有投射「,然後在控制檯中輸出3個隨機線 - http://i.imgur.com/ en2YDu6.png @deepakl –

1

因爲你返回 '字符*'

//to print first char in the string 
printf("[ %c ]\n", *display(Room1,5,5)); 

或者打印完整的字符串

//to print first char in the string 
printf("[ %s ]\n", display(Room1,5,5));