【发布时间】:2020-02-25 01:38:21
【问题描述】:
这是作业,这是给我的任务:
以大写和小写形式打印字符串
拆分中间的字符串并打印两个部分之间的“ - ”
要求:
字符串大小写转换必须在函数中完成。这些函数必须不返回任何内容 (void) 并被调用: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;
}
【问题讨论】:
-
试试
i<=strlen(inputString)-->i<strlen(inputString)。也许还有其他问题。 -
在某处设置
righttHalf[mid] = '\0'; -
不清楚你的问题是什么。看起来如此简单。请解释您遇到问题的明显步骤。定义一个空函数?调用一个空函数?将空函数更改为迷你 helloworld(即打印一些固定字符串)?更改函数以接受字符串参数?用字符串参数调用函数?打印函数内部的字符串参数?将字符串值复制到本地?处理本地字符串?决定将工作程序的哪一部分转移到函数中?
-
...
i <= length;也应该是i < length; -
你可以使用
toupper()和tolower()吗?这是最简单和便携的解决方案。
标签: c string function uppercase lowercase