我有这个代码示例。有一个scanf
来保存键盘输入的String
值(即Lotus)。但即使我正确输入 Lotus 这个词,它也不会执行相关的if
语句。 **我的scanf
功能???
#include<stdio.h>
int main()
{
char landType,houseType[100],wantToContinue,wantToContinue2;
float installment;
wantToContinue='Y';
while(wantToContinue == 'Y' || wantToContinue == 'y') {
printf("Land Type : ");
scanf(" %c",&landType);
if(landType == 'A') {
printf("Type of House: ");
scanf(" %s", houseType);
if(houseType == "Lotus") {
//this won't go inside if statement even if I type Lotus correctly
installment=4000000-500000;
printf("Monthly Installment : R.s %.2f\n",installment/120);
printf("Do you want to Continue?(Y/y or N/n) : ");
scanf(" %c",&wantToContinue2);
if(wantToContinue2 == 'Y' || wantToContinue2 == 'y') {
wantToContinue=wantToContinue2;
printf("\n");
}else{
wantToContinue='N';
}
}
}
}
}
答案 0 :(得分:0)
比较C中的两个字符串时要小心。您应该使用while ($row20 = mysqli_fetch_array($res)) {
$fecha[] = $row20['nombre_catalogo'];
}
$fecha = array_chunk($fecha, 5);
foreach($fecha as $data)
{
foreach($data as $fec)
{
echo $fec;
}
# echo implode('', $data); // implode also can be used instead of nested loop.
echo '</br>';
}
库中的strcmp
函数,如下所示:
string.h
当您编写if(strcmp("Lotus", houseType) == 0)
时,实际上是在比较两个字符串的基址而不是它们的实际内容。
答案 1 :(得分:0)
在C中,无法使用==
比较字符串。这是因为字符串不是C中的基本数据类型,即C本身并不了解如何比较它们 - 您必须使用函数。
用于比较C中的字符串的标准函数是strcmp()
,例如:
if (strcmp(houseType, "Lotus") == 0)
{
// do some work if the strings are equal
}
为了进一步解释,您使用housetype == "Lotus"
比较字符串的初始尝试实际上将存储字符数组houseType
的第一个字符的地址与字符数组的第一个字符的地址进行比较{存储了{1}}。
这是因为C中的字符串只是字符数组 - 它们不是固有的数据类型,因此C不能理解整数数组和字符数组之间的区别,它们都只是排列的数字在内存中的某个地方连续处理,除非你专门使用对它们进行操作的代码作为字符串,否则它会对它们进行处理。