这个程序出了什么问题,将大写字母转换成小写,编译能过,但是无法运行~
#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可以试试。
字符数组的值可以修改,字符串的值无法修改。