读书人

字符串转换有关问题,帮忙看下代码错哪

发布时间: 2012-02-04 15:43:09 作者: rapoo

字符串转换问题,帮忙看下代码哪里错了
#include<stdio.h>
#include<string.h>
char *change(char *string)
{
int i;
char *s;
s = NULL;
for(i = 0; i < strlen(string); i++)
{

if(*(string+i) >= 'a' || *(string+i) <= 'z')
{
*(s+i) = *(string+i) - 32;
}
else
*(s+i) = *(string+i);
}
*(s+i) = '\0';
return (s);
}

int main()
{
char str[20];
char *string;
string = str;
printf("input string:\n");
scanf("%s", str);
string = change(str);
printf("%s", string);
return 0;
}

程序运行出错~~帮忙找一下问题~~

[解决办法]
#include <stdio.h >
#include <string.h >
char *change(char *string)
{
int i;
char *s=string;
for(i = 0; i< (int)strlen(string); i++)
{
if(*(string+i) >= 'a ' || *(string+i) <= 'z ')
{
*(s+i) = *(string+i) - 32;
}
else
*(s+i) = *(string+i);
}
*(s+i) ='\0';
return s;
}

int main()
{
char str[20];
char* str1;
printf("input string:\n");
scanf("%s", str);
str1 = change(str);
printf("%s", str1);
return 0;
}
[解决办法]
s 就不需要定义了

char *change(char *string)
{
int i;
for(i = 0; i < strlen(string); i++)
{

if(*(string+i) >= 'a ' ¦ ¦ *(string+i) <= 'z ')
{
*(string+i) -= 32;
}
}
return (string);
}


简洁明了
[解决办法]
想问一下,你的功能是要把小写转换为大写吗?

如果是的话,请看这句,好像不对哦 if(*(string+i) >= 'a ' ¦ ¦ *(string+i) <= 'z ') ,确定是小写字符应该在'a'和'z'之间的,所以应该是&&

还有就是楼上所说的 s=NULL,s应该分配内存空间也就是s=new char[strlen(string)]

读书人网 >C++

热点推荐