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

求大家伙儿解答此题,指针与字符串,不知道哪错了

2012-09-13 
求大家解答此题,指针与字符串,不知道哪错了#include stdio.hvoid uppercase(char *str){while(*str!\0

求大家解答此题,指针与字符串,不知道哪错了
#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;
}
[解决办法]
探讨

引用:

C/C++ code
void uppercase(char *str)
{

while(*str!='\0')
{
if((*str>='a')&amp;amp;&amp;amp;(*str<='z'))
*str-=('a'-'A');
str++;
}

}

int main()
{

char str1[] ……

……

[解决办法]
在tc中可以运行
[解决办法]
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写。后果自负。
[解决办法]
关于常量字符串看这里

热点排行