我需要将字符串作为参数传递给函数Lower(char *),将给定的字符串文字转换为小写字母。该函数只能返回int。 在main()中,我需要以某种方式访问转换后的字符串。 目前我在Lower()函数中输入tmp字符串的地址,然后尝试取消引用该地址。 这是代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int Lower(char* str)
{
char tmp[100];
for(int i=0;i<=strlen(str);i++)
{
if(isupper(*(str+i)))
*(tmp+i) = *(str+i)+32;
else
*(tmp+i) = *(str+i);
}
return int(tmp);
}
int main()
{
char* str = "gOAt";
char *rc=(char *)Lower(str);
printf(rc);
return 0;
}
同样,函数原型不能改变,即原型必须是int Lower(char *)。但是,必须在main()函数中以某种方式访问“goat”。怎么办呢?
答案 0 :(得分:0)
发布的代码有很多问题。我的看法是从函数返回的int是状态代码,当它是1时,它表示转换为小写成功,否则为0。这是一个执行转换的工作程序:
#include <iostream>
using namespace std;
int lower(char* str)
{
int hasLower = 0;
while(*str)
{
if (*str >= 'A' && *str <= 'Z')
{
*str = (*str - 'A') + 'a';
hasLower = 1;
}
str++;
}
return hasLower;
}
int main(int argc, char** argv)
{
if (argc != 2) { cout << "No input! Exiting..." << endl; return 1; }
char* input = argv[1];
if (lower(input))
{
cout << "Lower case: " << input << endl;
}
else
{
cout << input << " isn't a valid string for lower-case conversion" << endl;
}
return 0;
}