C中使用函数将字符串转换为大写和小写
Use functions to convert string to upper and lowercase in C
这是家庭作业,这是给我的任务:
以大写和小写形式打印字符串
在中间拆分字符串并打印两部分之间的“ - ”
要求:
将字符串转换为大写和小写必须在函数中完成。这些函数必须 return 没有任何内容(无效)并被调用: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] = '[=10=]';
/* 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;
}
要创建函数,只需删除函数的代码(例如 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 执行类似操作。
您可以将用于将字符串转换为大写和小写的代码放在单独的函数中。像这样。
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;
}
如果您被允许使用 tolower()
和 toupper()
,这有效:
#include <ctype.h>
// note unsigned char!
void string_upper( unsigned char *str )
{
while ( *str )
{
*str = toupper( *str );
str++;
}
}
string_lower()
留作 reader... 的练习 ;-)
这是家庭作业,这是给我的任务:
以大写和小写形式打印字符串
在中间拆分字符串并打印两部分之间的“ - ”
要求:
将字符串转换为大写和小写必须在函数中完成。这些函数必须 return 没有任何内容(无效)并被调用: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] = '[=10=]';
/* 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;
}
要创建函数,只需删除函数的代码(例如 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 执行类似操作。
您可以将用于将字符串转换为大写和小写的代码放在单独的函数中。像这样。
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;
}
如果您被允许使用 tolower()
和 toupper()
,这有效:
#include <ctype.h>
// note unsigned char!
void string_upper( unsigned char *str )
{
while ( *str )
{
*str = toupper( *str );
str++;
}
}
string_lower()
留作 reader... 的练习 ;-)