iT邦幫忙

2

C語言初學 scanf & putchar疑問

大家好,目前在自學C語言
想請教以 putchar() 去替代printf()
如何向printf一樣 裡面可以用雙引號裡面輸入一些文字 代%c %d....等?

/* prog4_22, 使用getche()與getch()函數 */
#include <stdio.h>
#include <conio.h>       	/* 載入conio.h標頭檔 */
#include <stdlib.h>
int main(void)
{
   char ch;
   printf("請輸入一個字元: ");
   ch=getche();			/* 利用getche()輸入字元 */
   printf("  您輸入的字元是: %c\n",ch); /*將prinft(""),改成putchar*/
   
   
   putchar(ch);  /*可是該如何跟printf() 一樣裡面可以輸入 "您輸入的字元是: %c\n"呢??*/

   printf("請輸入一個字元: ");
   ch=getch();			/* 利用getch()輸入一個字元 */
   printf("   您輸入的字元是: %c\n",ch);
   
   system("pause");
   return 0;
}

weiclin iT邦高手 4 級 ‧ 2018-05-20 20:42:06 檢舉
沒辦法
沒可能
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
richardsuma
iT邦大師 1 級 ‧ 2018-05-20 22:02:15
最佳解答

你應該去 stdio.h 去看 putchar()與 printf() 裡面的函數定義。
可以參考:
https://blog.csdn.net/u010785142/article/details/47261509
https://www.jianshu.com/p/8b67752df4ad

寫程式是要幫人解決問題,不是替自己找問題,如果你想要 putchar() 有 printf()的功能,
就改寫 stdio.h 或是自己寫一個函數。因為 C 與就是可以隨你想要怎麼寫? 但也要考慮後續
維護程式的問題。

有問題當然很好,但不要鑽牛角尖。
為什麼你認為 putchar() 就一定要跟 printf() 一樣呢?
為何要 putchar() 有 printf()功能呢? 卻只顯示一個字元呢?

感謝richardsuma大的解答,看了您給的連結,大致了解兩個函式使用上的差異。
您說的對,有時我真的有點鑽牛角尖、異想天開,給自己找麻煩。

0
wwx
iT邦好手 1 級 ‧ 2018-05-21 09:55:33

可以喔...
putchar(c) is a macro defined to be putc(c, stdout).

例如VC的stdio.h中為

#define putchar(_c)       putc((_c),stdout)

依樣畫葫蘆,可以在main()之前自己加一個macro

#define putchar(s,_c) printf(s,_c)

這樣就能於程式這樣寫

putchar("  您輸入的字元是: %c\n",ch);

不過這個putchar只能提供輸入一個參數(printf是可以有無或多個)
如果 ch 是 int 前面就用 %d ... 依此類推

我只就可行性提供解答,沒有要想需不需要的問題

依我現在的程度,好像還看不太懂XD
感謝您的回答

0
小魚
iT邦大師 1 級 ‧ 2018-05-21 12:03:25

不要拿菜刀來刮鬍子,
雖然好像在漫畫還是電影中看過...

我要發表回答

立即登入回答