你好,所以我一直在做一個小程式,它有點像計算器(我是初學者),你可以在代碼末尾的標題中看到,如果 strcmp 不起作用,這兩個。并且 vscode 告訴我(對于 strcmp)發生了例外。分段故障。但是 gcc 告訴我標題中的內容。
#include <stdio.h>
#include <string.h>
int main()
{
float num1;
float num2;
float anwser;
int rnum = 1;
int hi = 0;
char operator;
char ifyorn;
char y = 'y';
char n = 'n';
while (hi == 0)
{
printf("Enter operator , -, /, x: ");
scanf(" %c", &operator);
printf("Enter num %d :", rnum );
scanf("%f", &num1);
printf("Enter num %d :", rnum );
scanf("%f", &num2);
switch (operator)
{
case ' ':
anwser = num1 num2;
printf("Do you want to continue y/n \n");
scanf(" %c", &ifyorn);
break;
case '-':
anwser = num1 - num2;
printf("Do you want to continue y/n \n");
scanf(" %c", &ifyorn);
break;
case 'x':
anwser = num1 * num2;
printf("Do you want to continue y/n \n");
scanf(" %c", &ifyorn);
break;
case '/':
anwser = num1 / num2;
printf("Do you want to continue y/n \n");
scanf(" %c", &ifyorn);
break;
default:
printf("This is not a valid character please try again :(");
break;
}
if(strcmp (ifyorn, n) == 0)
{
printf("%f", anwser);
hi == 1;
}
if(strcmp (ifyorn, y) == 0)
{
hi == 0;
}
}
}
uj5u.com熱心網友回復:
變數ifyorn和y被n宣告為具有型別char。
char ifyorn;
char y = 'y';
char n = 'n';
該函式需要指向字串strcmp的指標型別的引數。char *
所以這些 if 陳述句
if(strcmp (ifyorn, n) == 0)
和
if(strcmp (ifyorn, y) == 0)
不正確。相反,你應該寫
if ( ifyorn == n )
和
if ( ifyorn == y )
此外,您在這些陳述句中使用比較運算子而不是賦值
hi == 1;
和
hi == 0;
你需要寫
hi = 1;
和
hi = 0;
增加變數rnum看起來毫無意義
printf("Enter num %d :", rnum );
scanf("%f", &num1);
printf("Enter num %d :", rnum );
scanf("%f", &num2);
為什么不只是寫
printf("Enter num %d :", 1 );
scanf("%f", &num1);
printf("Enter num %d :", 2 );
scanf("%f", &num2);
在標簽下的代碼片段中,default您應該再添加一條陳述句
default:
printf("This is not a valid character please try again :(");
ifyorn = y;
break;
uj5u.com熱心網友回復:
你不必對這個人刻薄,他正在學習。
您收到此錯誤是因為您將字符傳遞給 strcmp() 而不是指向字符的指標。
這是有關該功能的更多資訊。
https://www.programiz.com/c-programming/library-function/string.h/strcmp
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/482634.html
下一篇:隔天的簡單演算法
