首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-04 
字符串转换问题,帮忙看下代码哪里错了#includestdio.h#includestring.hchar *change(char *string){in

字符串转换问题,帮忙看下代码哪里错了
#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)]

热点排行