[英]Why this Ansi C program does not give result?
我正在使用ubuntu 12.04 lts和gcc。 此ANSI C代碼在編譯時沒有錯誤或警告,但是當我嘗試執行a.out文件時,會出現一些垃圾值。 誰能告訴我,這個程序有什么問題?
#include <stdio.h>
int get_int(void);
int main (void)
{
int ret;
ret = get_int ;
putchar(ret);
printf("\n");
return 0 ;
}
int get_int(void)
{
int input;
char ch;
while ((scanf("%d", &input)) != 1)
{
while ((ch = getchar()) != '\n')
putchar(ch);
printf(" is not an integer.\nPlease enter an ");
printf("integer value, such as 25, -178, or 3: ");
}
return input;
}
您在函數調用中缺少括號。 這個:
ret = get_int ;
應該:
ret = get_int();
此外, getchar()
和putchar()
處理int
,而不是char
。
如果你的編譯器沒有警告你這些事情,特別是第一個,那么你需要一個新的,或者你需要打開它的警告級別。
另外,正如Gangadhar指出的那樣,現在你正在讀取一個整數並將其作為一個字符打印出來,因此輸入68
將輸出D
,例如,在使用ASCII的系統上。 這可能是,但可能不是,你想要的行為,所以如果不是,請用printf()
調用putchar()
。
以下兩個陳述不正確
ret = get_int ;
putchar(ret);
糾正它們如下
ret = get_int () ;
printf("%d\n", ret);
在上面ret =get_int ;
這表示編譯器將指針存儲為一個整數(它自己指向函數的函數名稱)並且在那個地方你需要調用function.here你的函數沒有需要任何參數所以你的調用應該有前面的空括號功能名稱。 第二個是你使用putchar
函數來打印整數值。你需要使用帶有%d
說明符的printf
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.