加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如果带有char的语句在C中不起作用

发布时间:2020-12-16 10:14:02 所属栏目:百科 来源:网络整理
导读:在大多数情况下,一切都正常,它可以构建无错误.但是,当我尝试运行它时,它似乎崩溃了.更具体地说,每当我启动代码并按“a”或“b”时,程序就会崩溃.有人能告诉我如何解决这个问题吗? #include stdio.h#include string.hint top=-1;int word;char stack_string[
在大多数情况下,一切都正常,它可以构建无错误.但是,当我尝试运行它时,它似乎崩溃了.更具体地说,每当我启动代码并按“a”或“b”时,程序就会崩溃.有人能告诉我如何解决这个问题吗?

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

int top=-1;
int word;


char stack_string[100];
void push(char word);
char pop(void);
int main()
{
    char input;
    char str[100];
    int i;
    printf("press [a] for palindrome check,[b] for string reversal:");
    scanf("%s",input);

    if (input == 'b'){
        printf("Input a string: ");
        scanf("%[^n]s",str);
        for(i=0;i<strlen(str);i++)
            push(str[i]);
        for(i=0;i<strlen(str);i++)
            str[i]=pop();
        printf("Reversed String is: %sn",str);
    }
    else if(input == 'a'){
        char str[100];
        int count = 0;
        printf("Input a string: ");
        scanf("%[^n]s",str);

        for (i = 0; i < strlen(str); i++)
        {
            push(str[i]);
        }

        for (i = 0; i < strlen(str); i++)
        {
            if (str[i]==pop())
            count++;
        }

        if (count == strlen(str))
            printf("%s is a palindromen",str);
        else
            printf("%s is not a palindromen",str);

    }

    return 0;
}

void push(char word)
{
    top=top+1;
    stack_string[top]=word;
}

 char pop()
{
    word = stack_string[top];
    top=top-1;
    return word;
}

解决方法

主要问题是输入流

对于scanf中的单个字符输入

我们使用scanf(“%c”,& input);

但对于我们使用的整个非空格字符/字符串数组

scanf(“%s”,str);

for string包含除新行之外的空格

gets_s(str,sizeof(str));

为你的情况

更正以下代码

scanf( "%s",input);

scanf(“%c”,& input);

快乐的编码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读