如何用一个字符终止我的程序?

时间:2017-05-24 16:55:30

标签: c string input

我被要求从用户那里获取第一个和第二个名字并在文件中搜索它。当用户输入字符“x”时,我也会被要求终止。或者' X'。

AddressComponent

它应该显示&#34; BYE&#34;并终止程序,但当我输入第一个printf("\nEnter the name and surname for WHR calculation (Exit - X): "); scanf("%s %s",name,surname); while(strcmp(name,'X')==0 ||strcmp(name,'x')==0){ printf("BYE!!\n"); exit(1); } 并点击输入时,没有任何反应,直到我再次输入x并点击输入。< / p>

4 个答案:

答案 0 :(得分:1)

您将关闭1个字符,但后面跟着新行(回车):

if ( tolower( name[0] ) == 'x' && name[1] == 0 )
{
    printf( "BYE!\n" );
    exit( 1 );
}

while循环不需要strcmp必须与"x"而不是'x'进行比较,但它比简单的字符比较更长。 PS:tolower需要#include <ctype.h>

答案 1 :(得分:1)

使用do while循环,这会一直要求输入,直到用户输入"x""X"do while循环是理想的,因为while 条件位于循环的 end ,这意味着循环将始终在至少每个程序执行一次。然后它将继续询问用户输入,直到用户输入所提到的字符串(x或X)。

do {
    printf("\nEnter the name and surname for WHR calculation (Exit - X): ");
    scanf("%s %s",name,surname);

    // Do more work here...

} while((strcmp(name, "X") != 0) && (strcmp(name, "x") != 0));

// Finish program
printf("BYE!!\n");
exit(1);

请注意,strcmp()需要包含string.h

答案 2 :(得分:1)

这里有几个基本错误: -

首先,如果您正在使用while,则最好使用if here

第二,你正在比较角色&#39; X&#39;或者&#39; x&#39;用字符串

我正在运行代码为我工作

char name[100], surname[100];
printf("\nEnter the name and surname for WHR calculation (Exit - X): ");
scanf("%s %s",name,surname);

printf("\n%s surname %s \n", name ,surname);
if(strcmp(name,"X")==0 ||strcmp(name,"x")==0){
    printf("BYE!!\n");
    exit(1);
}

答案 3 :(得分:1)

此代码等待用户输入两个单词,用空格/换行符分隔:

scanf("%s %s",name,surname);

系统不会继续执行您的其他代码,直到它从用户那里得到它想要的东西 - 两个字 - 或者发生错误(例如用户可以按 Ctrl + C )。

您似乎希望允许用户为name提供“x”并立即退出。所以你应该拆分输入代码:

scanf("%s",name);
scanf("%s",surname);

并填写检查中间x的代码:

scanf("%s",name);
if(strcmp(name,"X")==0 ||strcmp(name,"x")==0){
    printf("BYE!!\n");
    exit(1);
}
scanf("%s",surname);

如果你想检查名字和姓氏(也许用户输入他的姓氏为x以便退出),你应该复制代码或将其填入函数:

scanf("%s",name);
check_for_x(name);
scanf("%s",surname);
check_for_x(surname);

...

void check_for_x(const char *str)
{
    if(strcmp(str,"X")==0 ||strcmp(str,"x")==0){
        printf("BYE!!\n");
        exit(1);
    }
}