我知道你可以使用scanf并在if子句中使用一个字符,但是,有没有办法用字符串来做?
e.g。
printf("enter 'foo' to do 'bar', otherwise enter 'hay' to do 'wire');
scanf("%string", &stringNAME); //this is the part where I have no idea what to do
if (stringNAME == 'foo'){do bar} //here, issues occur with multicharacter character :/
if (stringNAME == 'hay'){do wire}
答案 0 :(得分:1)
你几乎得到了它,只是做了一些调整。
char stringNAME[10];
printf("enter 'foo' to do 'bar', otherwise enter 'hay' to do 'wire');
scanf("%9s", stringNAME);
if (!strcmp(stringNAME,"foo"){do bar}
if (!strcmp(stringNAME,"hay")){do wire}
注意scanf中的数字,即9.应该比输入字符串的大小少一个(或更小)。否则你冒着缓冲区溢出的风险,这是一个讨厌的业务。 fgets
是更好的选择,因为您被迫限制字符数。这就是你要这样做的方法(只需替换scanf
行)
fgets(stringNAME, 10, stdin)
答案 1 :(得分:0)
您可以使用带有%s说明符的scanf来读取字符串,但请确保您正在读取字符串(例如:char数组,动态分配的char *等等)。我看不到你的其余代码,但是从你提供的代码片段中,我对& stringName的含义有点怀疑。
以下是使用scanf的示例:
char s[100];
scanf("%s", s);
现在,请注意使用scanf来读取字符串。例如,上面的示例只会在您输入多字符串时返回第一个单词。
如果你知道你需要scanf罚款;否则,如有疑问,请使用fgets。
答案 2 :(得分:0)
字符串是char的向量,如果它们位于相同的内存地址中,则(str1 == str2)将返回。
if(strcmp(stringName, "foo") == 0){
//stringName is Foo
}
这将起作用