首页 > 解决方案 > 为什么 konsole 不等待第二次“阅读”/scanf?

问题描述

我有一个问题,当我运行我的程序时,它只需要第一个输入而不是第二个输入上的所有内容,我就是不知道为什么。要指定我是否在控制台 1 中写信,它的第一部分没有问题,然后打印这个奇怪的 ╠╠╠╠╠╠╠╠╠ (很多)和第二个任务,然后就像输入一样。该任务应该采用字符串(即使有空格)并计算出价/小写字母、数字等。有人可以告诉我我做错了什么吗?感谢您的帮助并保持安全

#include<stdio.h>

#include <string.h> 

int main()
{

    char z;
    int B = 0, s = 0, n = 0, else = 0;          
    printf("Enter character:");
    scanf_s("%c", &z, 1);
    if (z >= 'A' && z <= 'Z')
        printf("Big letter\n");
    else if (z >= 'a' && z <= 'z')
        printf("small letter\n");
    else if (z >= '0' && z <= '9')
        printf("number\n");
    else
    {
        printf("else\n");
    }
    

    char something[50];
    printf("Enter string:");
    scanf_s("%50[^\n]", str, 50);
    printf("Your name is %s", something);
    int space = 0;
    int len = 0;
    for (int i = 0; something[i] != '\0'; i++)
    {
        if (something[i] == ' ')
        {
            space++;
        }
        else
        {
            len++;
        }
    }
    for (int i = 0; i <= len; i++)
    {
        if (something[i] >= 'A' && something[i] <= 'Z')
        {
            B++;
        }
        else if (something[i] >= 'a' && something[i] <= 'z')
        {
            s++;
        }
        else if (something[i] >= '0' && something[i] <= '9')
        {
            n++;
        }
        else
        {
            other++;
        }


    }
    printf("Your input %s contains:\nB=%d s=%d n=%d else=%d\n", something, B, s, n, other);
    

        
        return 0;
    }

标签: c

解决方案


推荐阅读