gpt4 book ai didi

c - 将字符输入到 C 程序中的问题

转载 作者:行者123 更新时间:2023-11-30 21:39:52 25 4
gpt4 key购买 nike

我正在尝试运行一个程序,该程序在用户输入 MFN 时检查用户输入的一个字符。它将检查并比较字符字符。但是当我运行程序时。这不起作用。我和我的 friend 尝试了很多方法,但我们无法解决这个问题。该程序无法使用户输入的数据有效。请提供一些帮助。

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:

最佳答案

您不能使用strcasecmp来比较字符。这并不是完全错误,但单个字符不是正确终止的字符串。

如果您必须以这种方式进行比较,请使用strncasecmp:

if(strncasecmp(&gender,&word_M, 1) == 0)

这将限制它只比较一个字符。

此外,您的重试循环不会检查“F”,而是检查“M”两次。

关于c - 将字符输入到 C 程序中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27189885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com