使用函数将字符串转换为C中的大写和小写

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

这是作业,这是我的任务:以大写和小写形式打印字符串在中间拆分字符串,并在两个字符串之间用“-”打印两个部分要求:

必须在函数中将字符串转换为大写和小写。这些函数必须不返回任何内容(无效)并被调用:string_upper,string_lower。不要使用strlwr或strupr。

注意:字符串长度始终是偶数。

预期的输出(以您收到的字符串作为输入):

大写的字符串是'ABCDEFGH'小写的字符串是“ abcdefgh”一分为二的字符串是'abcd-efgh'

我设法提出了一些可行的方法,但它按任务要求使用了一些功能。您如何通过功能来做到这一点?

我环顾四周,但找不到使用函数将字符串转换为大写和小写的任何示例

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

int main() {

    char inputString[100], leftHalf[100], rightHalf[100];
    int length, mid, i, k;

    /* Read input string from user using gets */
    printf("Enter a string\n");
    gets(inputString);
    /* Find length of string using strlen function */
    length = strlen(inputString);

    mid = length/2;
    /* Copy left half of inputString to leftHalf */
    for(i = 0; i < mid; i++) {
        leftHalf[i]= inputString[i];
    }
    leftHalf[i] = '\0';

    /* Copy right half of inputString to rightHalf  */
    for(i = mid, k = 0; i <= length; i++, k++) {
        rightHalf[k]= inputString[i];
    }

    for(i=0;i<=strlen(inputString);i++)
    {
        if(inputString[i]>=65&&inputString[i]<=90)
            inputString[i]=inputString[i]+32;
    }
    printf("String in Lowercase: %s\n",inputString);
    /* To print string in upperCase*/
    for(i=0;i<=strlen(inputString);i++)
    {
        if(inputString[i]>=97&&inputString[i]<=122)
            inputString[i]=inputString[i]-32;
    }
    printf("String in Uppercase: %s\n",inputString);


    /* Printing left and right half of string */
    //printf("Left half : %s\n",leftHalf);
    //printf("Right half : %s\n",rightHalf);
    printf("%s-%s",leftHalf, rightHalf);

    return 0;
}
c string function uppercase lowercase
3个回答
2
投票
要创建函数,只需删除函数的代码(例如for循环)。不要忘记声明辅助变量(例如int i)。像这样

void string_upper (char *inputString) { int i; for(i=0;i<=strlen(inputString);i++) { if(inputString[i]>=65&&inputString[i]<=90) inputString[i]=inputString[i]+32; } }

然后在您的主要代码中,您致电

string_upper (inputString);

而不是那里的for循环。

对string_lower做类似的事情。


0
投票
您可以将代码将字符串分别转换为大写和小写形式。这样。

void string_upper (char* str) { for(int i=0; i<=strlen(str); i++) { if(str[i]>=97 && str[i]<=122) str[i]=str[i]-32; } } void string_lower(char* str) { //... } int main() { char inputString[100], leftHalf[100], rightHalf[100]; int length, mid, i, k; //... /* call function to convert string to upper-case*/ string_upper(inputString); printf("String in Uppercase: %s\n",inputString); /* call function to convert string to lower-case */ string_lower(inputString); printf("String in Lowercase: %s\n",inputString); //... return 0; }


0
投票
如果允许您使用tolower()toupper(),则可以使用:

#include <ctype.h> // note unsigned char! void string_upper( unsigned char *str ) { while ( *str ) { *str = toupper( *str ); str++; } }

string_lower()作为练习留给读者...;-)
© www.soinside.com 2019 - 2024. All rights reserved.