问题似乎在
第18行:警告:指针和整数之间的比较
之前的预期表达式
第22行:错误:在' else'
我做错了什么?有没有更好的方法呢?
#include <stdio.h>
int main(void)
{
char pname[25];
char Y[1];
char N[1];
char choice[1];
printf("when responding to Yes or No questions use Y/N.\n");
printf("Hello,traveler Welcome to the Castle of Atal...."
"What is your name?\n");
scanf("%s", &pname);
printf("Greeting's %s What bring's you to the kingdom of Tharnos?\n",
pname);
printf("I see how intresting do you wish to enter %s ?\n", pname);
scanf("%c", &choice);
if (choice == 'Y');
printf("Enter %s...\n", pname);
else (choice == 'N');
printf("Farewell lost soul!\n");
return 0;
}
答案 0 :(得分:8)
在您的代码中,更改定义
char Y [1];
char N [1];
char choice[1];
到
char Y;
char N;
char choice;
否则,使用当前定义,choice
表示array
(1个元素),
char
可以正常工作。choice == 'Y'
的警告,因为您无法将数组与==
运算符进行比较。那就是说,
scanf ("%c",&choice);
应为scanf (" %c",&choice);
,以避免之前的newline
。scanf ("%s",&pname);
应为scanf ("%24s",pname);
以避免缓冲区溢出。,如 @iharob 先生提到的in the answer,
if (choice == 'Y');
应为if (choice == 'Y')
(已移除;
),否则if
语句实际上无用。 else
没有条件表达式评估。不过,您可以使用else if(choice == 'N')
。答案 1 :(得分:6)
您的if语句确实存在问题
你不应该在if语句的末尾加一个分号,这意味着一个带有空代码块的if语句。
语法
else (choice == 'N');
错了,但有一个等价的
else if (choice == 'N');
/* ^ you should add `if' after `else' */
您的代码有更多问题,但您没有问过它们。无论如何,@ SouravGhosh确实解决了这个问题。
答案 2 :(得分:4)
删除分号。
if (choice == 'Y'); <----- remove this semicolon
{
printf ("Enter %s...\n",pname);
}
以上相当于:
if( choice == 'Y')
; /* Do nothing */
printf( ... );
else /* syntax error, not paired with an if statement */
;
答案 3 :(得分:2)
您的语法不正确,您应该使用正确的语法:
if (condition) {
} else if (condition) {
}
或者你可以使用这个,如果你没有任何条件成立时默认做的事情:
if (condition) {
} else if (condition) {
} else {
// you will get in this if when all of your conditions become false
}