打印其中包含空格的字符串数组

问题描述 投票:0回答:1

我想输入一个字符串,将它们转换为小写或大写并打印它们。到目前为止,我已经成功地实现了这一点。现在,我想修改我的程序,如果输入中有空格,它将打印所有转换后的字母加上空格

例如,

Enter a string: STACK OVERFLOW
Output: stack overflow

这是我的代码:

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

#define MAX_CHAR 50
char to_lowercase(char letter);
char to_uppercase(char letter);

int main(void)
{
    char user_input[MAX_CHAR];

    printf("Enter a string: ");
    scanf("%s", &user_input);

    for (int i = 0; i <= MAX_CHAR; i++)
    {
        if (user_input[i] == 0){exit(EXIT_SUCCESS);}
        else{printf("%c", to_lowercase(user_input[i]));}
    }

    return EXIT_SUCCESS;
}

char to_lowercase(char letter)
{
    if ((97 <= letter) && (letter <= 122)) {return letter;} 
    else if ((65 <= letter) && (letter <=90)) {return letter + 32;}
    else if (letter == 32){return letter;}
    else
    {
        printf("Not a valid character!");
        exit(EXIT_FAILURE);
    }
}

char to_uppercase(char letter)
{
    if ((65 <= letter) && (letter <= 90)) {return letter;}
    else if((97 <= letter) && (letter <= 122)) {return letter - 32;}
    else if (letter == 32){return letter;}
    else
    {
        printf("Not a valid character!");
        exit(EXIT_FAILURE);
    }
}

我当前的方法是使用 ASCII 代码检查空格(#32),但这实际上不起作用,因为当我输入“STACK OVERFLOW”时,程序只会打印“s”

arrays c string function ascii
1个回答
0
投票

scanf
中,
%s
仅扫描不带空格的字符串。它停在第一个空白字符处。更改为使用
fgets(user_input, sizeof user_input, stdint);

© www.soinside.com 2019 - 2024. All rights reserved.