求大家伙儿解答此题,指针与字符串,不知道哪错了
求大家解答此题,指针与字符串,不知道哪错了
#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所指的内存是不能被改写的
------解决方案--------------------
#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所指的内存是不能被改写的
------解决方案--------------------
- C/C++ code
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;
}
------解决方案--------------------
------解决方案--------------------
在tc中可以运行
------解决方案--------------------
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写。后果自负。
------解决方案--------------------
关于常量字符串看这里