微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何根据输入打印不同的字符串?

如何解决如何根据输入打印不同的字符串?

如果输入名称​​ Emily Jack ,并且要输入另一条消息,我希望显示一条消息。

我的代码

#include <stdio.h>
#include <string.h>

int main()
{
    char name;
    
    printf("What is your name?");
        
    gets(name);
    
    if ((strcmp(name,"Emily") == 0) || (strcmp(name,"Jack") == 0))
    {
        printf("Hello %s\n",name); 
    } else 
    {
        printf("Welcome Stranger!\n");
    }
    
    return 0;
}

代码将编译,但不会输出任何内容

解决方法

第一个问题是name可以只存储一个char,要存储一个字符串,则需要一个char数组。

第二个问题不是引起错误的行为,但同样重要的是使用gets。此功能在 C99 中已弃用,并已在 C11 中从国际标准中删除。由于充分的理由,此功能非常危险,因为它很容易溢出目标缓冲区,无法控制在输入流的长度上。经常使用fgets

char name[256]; //array store the name

//...

fgets(name,sizeof name,stdin); //safe,can't overflow the buffer,input size is limited
name[strcspn(name,"\n")] = '\0'; //fgets parses the newline character,it must be removed

//...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。