修改char * str的内容
我尝试通过void函数来反转字符串,但是对于“str”它存储的只读内存(正如我在搜索论坛中的现有线程中所知的)发生分段错误。
我试图在“反向”函数中使用strcpy(copy,str),但它只是反转新创建的char数组“copy”,它不能返回到main函数。 我不想在反向函数中使用printf(“%s”,copy)来打印反转的字符串。
无论如何反向str
char str[] = "Hello"
main()
函数中的代码 reverse()
的函数类型保留为void
? void reverse(char* str)
{
int l = strlen(str);
char temp;
int j = length - 1;
for (int i = 0; i < j; ++i)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
--j;
}
}
int main(int argc, char* argv[])
{
char* str = "Hello";
reverse(str);
printf("%sn", str);
return 0;
}
问题是你不能修改字符串文字。
像这样尝试:
char str[] = "Hello";
reverse(str);
在上面, str
不再是一个字符串,它是一个初始化为{'H', 'e', 'l', 'l', 'o', '