2017-08-08 11 views
2
#include <stdio.h> 
#include <stdlib.h> 

int main() { 
    int year = 2017; 
    int month = 8; 
    int date = 8; 

    printf("%i/%i/%i", date, month, year); 
    return EXIT_SUCCESS; 
} 

ここに私のコードです。私はそれがC - printf( "%i")は追加%を出力します。

2017年8月8日

を印刷したいと思いますが、それは実際に

8月8日/ 2017%

がどのように私はこの問題を解決することができます印刷します問題?

答えて

10

zshをお使いですか?いくつかのシェルは、プログラムが末尾の改行なしで出力を出力するときに%を出力します。 %は、プログラム出力を次のシェルプロンプトから分離するためのスタンダードデリミタです。それを取り除くためにあなたのprint文の最後に改行文字を追加しますWhy ZSH ends a line with a highlighted percent symbol?

を見てください:

printf("%i/%i/%i\n",date , month , year); 

私は私のMacintoshでzshを持っている、と私は、この現象を再現することができます。

#include <stdio.h> 

int main() { 
    printf("Hello world!"); 

    return 0; 
} 

Output

$ ./a.out 
Hello world!%                        
+0

ほとんどの標準的な、バリむしろ非標準の動作ここでは簡単なCプログラムです。私は以前これについて聞いたことがありません。これは、特定の* nix風味のいくつかのクールなようです。 – Lundin

+0

@ Lundin OSよりもむしろシェルの選択は、私が信じるのは犯人だ。私は私のマックでzshを持っています、それはまったく同じことです...それは私が知っている、または少なくともOPの問題が何であるか知っていると主張することができます。 –

関連する問題