Helllo我仍然是编程的新手,并且在使用用户输入时使用if语句与我进行的研究有一个问题我似乎无法找到我做错了什么? 下面是我发布的简单乘法计算器。
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
int a ;
int b ;
int c ;
printf("\n");
printf("\n");
printf("Welcome to calculator");
printf("\n");
printf("\n");
printf("what would you like to choose for first value?");
scanf("%d", &a);
printf("\n");
printf("What would you like to input for the second value?");
scanf("%d", &b);
c = a * b;
printf("\n");
printf("\n");
printf(" Here is your product");
printf("\n");
NSLog(@"a * b =%i", c);
char userinput ;
char yesvari = "yes" ;
char novari = "no";
printf("\n");
printf("\n");
printf("Would you like to do another calculation?");
scanf("%i", &userinput);
if (userinput == yesvari) {
NSLog(@" okay cool");
}
if (userinput == novari) {
NSLog(@"okay bye");
}
返回0; }
答案 0 :(得分:2)
您使用%i
错误地扫描了角色,您需要使用strcmp
对其进行比较。如果要查找用户的字符串,则需要使用%s
,并且需要一个足够大的字符缓冲区来保存输入。
试试这个
//Make sure userinput is large enough for 3 characters and null terminator
char userinput[4];
//%3s limits the string to 3 characters
scanf("%3s", userinput);
//Lower case the characteres
for(int i = 0; i < 3; i++)
userinput[i] = tolower(userinput[i]);
//compare against a lower case constant yes
if(strcmp("yes", userinput) == 0)
{
//Logic to repeat
printf("yes!\n");
}
else
{
//Lets just assume they meant no
printf("bye!\n");
}
答案 1 :(得分:1)
我认为您正在使用错误的格式char
阅读%i
:scanf("%i", &userinput);
我认为使用@NSString而不是简单的char更好(我甚至不确定如果你写char a = "asd"
会在ObjC中发生什么,因为你给了char
一个{ {1}}值)。在这种情况下,因为字符串是指针you cannot use ==
to compare them。您可以改用char[]
或isEqualToString
。如果您对两者之间的差异感兴趣,请查看this post会有所帮助。
答案 2 :(得分:0)
在C中,您无法使用==
比较字符串,因此您必须使用strcmp()
之类的函数,如下所示:
if ( !strcmp(userinput, yesvari) ) {
//etc.
}
使用bang(!)是因为strcmp()
在两个字符串匹配时实际返回0。欢迎来到C的精彩世界!