2017-08-08 68 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?当程序输出没有尾随换行符的输出时,某些shell会打印一个%%是一个站点分隔符,用于将程序输出与下一个shell提示符分开。看看Why ZSH ends a line with a highlighted percent symbol?

换行符添加到您的打印语句的结束,以摆脱它:

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

我有zsh我的苹果,我可以重现此问题。这里有一个简单C程序:

#include <stdio.h> 

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

    return 0; 
} 

Output

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

几乎没有标准无关,相反不规范的行为。我从来没有听说过这个。这似乎是一种特殊的* nix味道的一些怪癖。 – Lundin

+0

@Lundin shell的选择,而不是操作系统,我认为是罪魁祸首。我在我的Mac上安装了zsh,它的确如此......这就是为什么我知道,或者至少可以声称知道OP的问题所在。 –