求大家解答此题,指针与字符串,不知道哪错了
#include <stdio.h>
void uppercase(char *str)
{
while(*str!='\0')
{
if((*str>='a')&&(*str<='z'))
*str-=('a'-'A');
str++;
}
}
int main()
{
char *str1="aBcDeF";
uppercase(str1);
printf("%s \n",str1);
return 0;
}
这个是将字符串中的小写字母改为大写?
还有这个字符串拷贝的问题?
#include <stdio.h>
char * strcpy_str (char *strDest,const char *strSrc)
{
// assert((strDest!=NULL)&&(strSrc!=NULL));
char *strDestCopy=strDest;
while ((*strDest++=*strSrc++)!='\0');
return strDestCopy;
}
void main()
{
char *str=NULL;
char *strdest="abcd";
str=strcpy_str(strdest,"hello");
printf("%s \n",str);
}
vc++6.0中编译通过,但运行时程序崩溃,why?
谢谢
[解决办法]
char *str1="aBcDeF"; 常量字符串
[解决办法]
1楼正解
char *str1="aBcDeF"和char *strdest="abcd"都是常量字符串,指针str1和strdest所指的内存是不能被改写的
[解决办法]
void uppercase(char *str){ while(*str!='\0') { if((*str>='a')&&(*str<='z')) *str-=('a'-'A'); str++; }}int main(){ char str1[] = "aBcDeF"; uppercase(str1); printf("%s \n",str1); return 0;}#include <stdio.h>char * strcpy_str (char *strDest,const char *strSrc){ // assert((strDest!=NULL)&&(strSrc!=NULL)); char *strDestCopy=strDest; while ((*strDest++=*strSrc++)!='\0'); return strDestCopy;}void main(){ char *str=NULL; char strdest[]="abcdsss"; str=strcpy_str(strdest,"hello"); printf("%s \n",str);}
[解决办法]
字符串常量是不能被修改的
[解决办法]
#include <stdio.h>
void uppercase(char *str){
char* str_temp=str;
while(*str_temp!='\0'){
if((*str_temp>='a')&&(*str_temp<='z'))
*str_temp-=('a'-'A');
str_temp++;
}
}
int main(){
//char *str1="aBcDeF";// str1 is const string,its element can't been modified.
char str1[]="aBcDeF";
uppercase(str1);
printf("%s \n",str1);
printf("a=%d, A=%d\n",'a','A');
return 0;
}
[解决办法]