在C ++中更改字符串或字符指针的某些字符

时间:2014-09-04 21:01:02

标签: c++ c string pointers immutability

我将非常感谢并感谢能够帮助我帮助我的他/她。它与C / C ++类似。

int string_length;
char *str;
str="Muhammad ashikuzzaman";
printf("%c",str[1]); 
str[1]='o'; // Here an Unhandled Exception occurred
printf("%c",str[1]);

在第6行或可能在5中发生未处理的异常并且输出未显示。我需要更改字符指针的任何特定字符。请帮帮我。

3 个答案:

答案 0 :(得分:7)

字符串文字在C和C ++中是不可变的。也就是说,任何修改它们的尝试都会导致程序的未定义行为。而不是这些陈述

char *str;
str="Muhammad ashikuzzaman";

使用这个

char str[] = "Muhammad ashikuzzaman";

关于指针str的定义和初始化,C ++中的正确​​代码看起来像

const char *str;
str="Muhammad ashikuzzaman";

C ++中的字符串文字具有常量字符数组的类型。

答案 1 :(得分:0)

int string_length;
char *str,*str2,ch;
str="Muhammad ashikuzzaman";
str2=str;
string_length=strlen(str);
str=(char*)malloc(string_length*sizeof(char));
for(int i=0;i<string_length;i++)
    {
     if(i==1)
     *(str+i)='o';
     else  *(str+i)=str2[i];
     } 
for(int i=0;i<string_length;i++)
    printf("%c",*(str+i));

答案 2 :(得分:0)

字符串在c / c ++ / java / python中是不可变的。不允许字符串中的某个字符。

Using character pointer strings is stored in two ways.
            1.Read only string in a shared segment.
            2.Dynamically allocated in heap segment.

当字符串值直接分配给指针时,它仅存储在段之间共享的只读段中

            char *str = "Helloworld";

以上字符串&#34; Helloworld&#34;存储在共享只读位置,但指针str存储在读写存储器中。您可以将str更改为指向其他内容但在当前str中无法更改值。

来源:http://www.geeksforgeeks.org/storage-for-strings-in-c/