[英]why my program is giving garbage value in o/p after providing sufficient inputs? code is as follows:
為什么我的程序在提供足夠的輸入后在O / P中給出垃圾值?
我給的I / P為10 & 40
,選擇乘法選項為3
。
我的代碼如下:
int main()
{
int a,b,c,x;
printf("Enter a & b \n"); //printing
scanf("%d %d, &a,&b");
printf("1. add \n 2. sub \n 3. multiply \n 4. div \n 5. mod \n 6. and \n 7. or\n 8. not \n 9. xor \n");
printf("Enter your choice \n");
scanf("%d, &x");
switch(x)
{
case 1: c=a+b;
break;
case 2: c=a-b;
break;
case 3: c=a*b;
break;
case 4: c=a/b;
break;
case 5: c=a%b;
break;
case 6: c=a && b;
break;
case 7: c=a || b;
break;
case 8: c=~a;
break;
case 9: c=a^b;
break;
default: printf("Make correct choice\n");
}
printf("result is: %d",c);
return 0;
}
您正在將字符串傳遞給第5和8行的scanf函數,並且沒有存儲區來保存已掃描/讀取的參數。
scanf
函數的原型如下:
int scanf(const char *format_string, ...);
其中format_string
是包含format specifiers
例如%d, %f
... etc)的字符串
原型中的"..."
表示可變數量的參數。 這些參數是存儲桶,用於通過讀取format_string
來保存scanf
填充的值。
因此,正確的代碼行應為
line 5. scanf("%d %d", &a,&b);
line 8. scanf("%d", &x);
另一個令人毛骨悚然的事情是scanf
的變量參數始終是指向對象的指針。
scanf函數的語法是
scanf(“format string”, argument list);
例如,改變
scanf("%d %d, &a,&b");
scanf("%d, &x");
至
scanf("%d %d", &a,&b);
scanf("%d", &x);
首先,您的任何輸入都不會從控制台或任何其他輸入進行掃描。
請檢查scanf()sysntax。
#include<stdio.h>
int main()
{
int a,b,c,x;
printf("Enter a & b \n"); //printing
scanf("%d %d", &a, &b);
printf("1. add \n 2. sub \n 3. multiply \n 4. div \n 5. mod \n 6. and \n 7. or\n 8. not \n 9. xor \n");
printf("Enter your choice \n");
scanf("%d", &x);
switch(x)
{
case 1: c=a+b;
break;
case 2: c=a-b;
break;
case 3: c=a*b;
break;
case 4: c=a/b;
break;
case 5: c=a%b;
break;
case 6: c=a && b;
break;
case 7: c=a || b;
break;
case 8: c=~a;
break;
case 9: c=a^b;
break;
default: printf("Make correct choice\n");
}
printf("result is: %d",c);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.