【发布时间】:2014-11-28 13:35:31
【问题描述】:
我正在尝试运行一个程序,当用户输入 M、F 或 N 时检查用户输入的字符。它将检查和比较 char 字符。但是当我运行程序时。它不起作用。我和我的朋友尝试了很多方法,但我们无法解决这个问题。程序无法验证用户输入的数据。请帮忙。
typedef struct {
char onePatient.gender;
}PATIENT_T
PATIENT_T onePatient;
上面已经声明了typedef,对此感到抱歉。
这是程序功能:
void checkGender(char pointerGender)
{
char gender;
char buffer[32];
char word_M = ('M'); /* Male */
char word_F = ('F'); /* Female */
char word_N = ('N'); /* None */
printf("\nEnter Gender: ");
fgets(buffer,sizeof(buffer),stdin);
//strcpy(&gender,buffer);
sscanf(buffer,"%c",&gender);
while((strcasecmp(&gender,&word_M) != 0)||(strcasecmp(&gender,&word_M) != 0)||(strcasecmp(&gender,&word_N) != 0))
{
printf("\nError: Invalidate Grade");
printf("\n(Please enter wheather M [for Male], F [for Female] or N [for None])");
printf("\nEnter gender: ");
fgets(buffer,sizeof(buffer),stdin);
//strcpy(&gender,buffer);
sscanf(buffer,"%c",&gender);
}
}
这是在主函数中:
int main()
{
char pointerGender;
PATIENT_T onePatient;
checkGender(pointerGender);
strcpy(&onePatient.gender,&pointerGender);
printf("\n%s",&onePatient.gender);
}
终端展示:
192:iHeal Hospital iFluke$ gcc -o checkFormat_Fluke checkFormat_Fluke.c
192:iHeal Hospital iFluke$ ./checkFormat_Fluke
Enter Name: fluke
Enter Gender: M
Error: Invalidate Grade
(Please enter wheather M [for Male], F [for Female] or N [for None])
Enter gender: F
Error: Invalidate Grade
(Please enter wheather M [for Male], F [for Female] or N [for None])
Enter gender: N
Error: Invalidate Grade
(Please enter wheather M [for Male], F [for Female] or N [for None])
Enter gender:
【问题讨论】:
-
另外,onePatient 的声明也不见了。
-
什么是 PATIENT_T(再次)? ...好吧,strcpy 用于字符串、字符和类对象。不太可能这没问题。 => 整个代码看起来像废话。
-
编译所有警告和调试信息 (
gcc -Wall -Wextra -g) 然后使用调试器 (gdb) -
顺便说一句,
PATIENT_T onePatient;不是 typedef,而是一个普通的实例。 -
好吧,然后是一本 C 书。 typedef、strcpy 用法等在两种语言中都是无效的。
标签: c function scanf eof abort