C语言函数调用(大写变小写

来源:百度知道 编辑:UC知道 时间:2024/06/03 02:40:52
我遇到了几种情况,请高人指点:
情况1:
#include<stdio.h>
main()
{ int i;
char c;
char s[]={'A','B','C','D','f','\0'};
for(i=0;i<5;i++)
{c=lwer(s[i]);
putchar(c);
}
}
char lwer(int c)
{
if(c>='A'&&c<='z')
return c+'a'-'A';
else
return c;
}编译结果 warning C4013: 'lower' undefined; assuming extern returning int
error C2371: 'lower' : redefinition; different basic types返回char型有什么错?
情况2:
#include<stdio.h>
main()
{
int i;
char c;
char s[]={'A','B','C','D','f','\0'};
for(i=0;i<5;i++)
{c=lwer(s[i]);
putchar(c);
}
}
int lwer(int c)
{
if(c>='A'&&c<='z')

return c+&

对于情况一来说,函数中的c属于int型,返回数据为char型。他们类型不一样。所以不能用c作为返回值。

你定义的函数的返回值类型和实际的返回值类型不一致。函数使用前要先声明和定义,你只有定义没有声明。要不你就把它们放啊main前面。

缺少输出可能是流没有刷新,你在程序末尾加一个输出换行符的语句。

还有,你用的z好像是小写的。

少头文件ctype.h令外大写变小写函数是islower

2、int lwer(int c)这个函数应在朱汉时使用它之前就声明,否则找不到这个函数!我觉得是哪个字符根整形的转换,有点让人弄不清头脑,外部函数使用字符的时候你传的是他的ACSII码,你反悔的也是整形的值,返回后又把整形的值赋给了字符型的变量,我觉得这些让人很难弄得很清楚!
其实很简单的:如果是大写,那么他的ASCII码值加上32就会变成相应的小写,何必隐式的装换来转换去呢?,这样弄得你都不很清楚!

1、char lwer(int c)同样的你的这个函数为什么还是声明的int型的参数呢?