2012-12-09 66 views
3

我想在C中寫一個簡單的主函數,接收兩行字符串輸入並將它們打印在屏幕上。 這是我寫的代碼:編譯打印字符串函數給出錯誤信息 - C

int main() 
{ 
    char a[100]; 
    char b[100]; 
    printf("Enter the first string:\n"); 
    fgets(a,100,stdin); 
    printf("Enter the second string:\n"); 
    fgets(b,100,stdin); 
    printf("\n\n THE FIRST STRING IS: %S\n\n THE SECOND STRING IS:%S",a, b); 
    return 0; 
} 

,當我嘗試編譯,我收到此錯誤信息:

gcc -g -Wall PN52.c -o myprog 
PN52.c: In function ‘main’: 
PN52.c:12:2: warning: format ‘%S’ expects argument of type ‘wchar_t *’, but argument 2 has type ‘char *’ [-Wformat] 
PN52.c:12:2: warning: format ‘%S’ expects argument of type ‘wchar_t *’, but argument 3 has type ‘char *’ [-Wformat] 

感謝您的幫助

+3

請路過'-Wall'到'gcc'的好習慣! –

回答

7

您使用%S格式,而字符串格式(char*)爲%s

printf("%s - %s\n", a, b); 
3

小寫%sprintf替換大寫%S格式字符串。

+0

哇我討厭那些你不能找到的小錯誤... – Yuval

+0

感謝它現在好吧 – Yuval

+0

不,gcc的'-Wall'選項讓你很快發現錯誤 –

0

剛剛替換爲%s%S爲C是區分大小寫的,這就是爲什麼你必須採取的這些東西護理