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

这个程序出了什么有关问题,将大写字母转换成小写,编译能过,但是无法运行

2012-10-16 
这个程序出了什么问题,将大写字母转换成小写,编译能过,但是无法运行~#include stdlib.h#include stdio.

这个程序出了什么问题,将大写字母转换成小写,编译能过,但是无法运行~
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

char *str1="ABDFLjlero我们都是saf";
char *ToLower(char s[])
{
static size_t len=strlen(s);
for(int i=0;i<len;i++)
{
if(s[i]>='A'&& s[i]<='Z')
{
s[i]+=32;
}
}
return s;
}
int main()
{

printf("old str is: %s\n after change is : %s\n",str1,ToLower(str1));
}

[解决办法]
不对吧,strlen(s)确实是字符串的长度,你说的求指针变量内存大小应该是sizeof吧?

问题在这一句:s[i]+=32;你实际的字符串是字符串而不是字符数组

char *str1="ABDFLjlero我们都是saf";而这个本来就已经是写入内存的,怎么修改?

改成char str1[]="ABDFLjlero我们都是saf";可以编译通过,LZ可以试试。

字符数组的值可以修改,字符串的值无法修改。

探讨

static size_t len=strlen(s);这句有问题,strlen(s);求得的只是指针变量的内存大小 也就是4 这可能不是你想要的

[解决办法]
探讨

不对吧,strlen(s)确实是字符串的长度,你说的求指针变量内存大小应该是sizeof吧?

问题在这一句:s[i]+=32;你实际的字符串是字符串而不是字符数组

char *str1="ABDFLjlero我们都是saf";而这个本来就已经是写入内存的,怎么修改?

改成char str1[]="ABDFLjlero我们都是saf";可以编译通过,LZ可以试试。

字符数组……

[解决办法]
char *str1="ABDFLjlero我们都是saf";
改成
char str1[]="ABDFLjlero我们都是saf";
就行了。

热点排行
Bad Request.