在C++中更改字符串或字符指针的某些字符
我会非常感谢并能够帮助我的人帮助我。它在C/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行出现未处理的异常,并且输出不显示。我需要更改字符指针的任何特定字符。请帮帮我。
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));
这不是很好的示例代码。很多不必要的变动和覆盖变量。最后一行最好写成'printf(“%s”,str);',但是甚至'str [i]'会比(*(str + i)'更好。 (另外,你忘了保留终止0的空间。你的新'str'是*不是一个合适的C字符串。) – usr2564301 2014-09-04 21:46:17
但是当我在代码后面写str [i]时,它也显示了一些其他ascii值名字“Muhammad Ashikuzzaman8◙♠♥•-▬♂”。我做了一个循环,因为我
关于奇怪的字符:记下我最后一句(我稍后添加它,以便您可能最初错过了它。) – usr2564301 2014-09-04 21:57:56
字符串文字在C和C++中是不可变的。这是任何尝试修改它们都会导致程序未定义的行为。相反,这些语句
char *str;
str="Muhammad ashikuzzaman";
使用这一个
char str[] = "Muhammad ashikuzzaman";
至于你的定义和指针海峡的初始化,然后在C++正确的代码看起来像在C
const char *str;
str="Muhammad ashikuzzaman";
字符串常量++有常量字符数组的类型。
谢谢@Vlad来自莫斯科我曾经使用动态内存分配,并得到了一个确切的解决方案.. – 2014-09-04 21:21:16
字符串在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";
上述字符串的“HelloWorld”之间共享存储在一个只共享读段只存储位置,但指针str存储在读写存储器中。你可以改变str以指向别的东西,但不能改变当前的值。
打开您的编译器警告。他们全部。直到你读完所有内容后才能回来。 – 2014-09-04 21:02:47
“Muhammad ashikuzzaman”是一个常量字符串;分配内存并将其复制到该内存中,然后根据需要进行修改。 – abiessu 2014-09-04 21:03:10
谢谢@abiessu。我分配了动态内存并获得了解决方案。 – 2014-09-04 21:18:01