[英]How to reverse a string in C?
我试图反转一个字符串,但是当我运行代码时,程序崩溃了。 我究竟做错了什么? 该程序应该首先显示,而后不反转字符串。
PS:如果您没有注意到,我是C语言的新手。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reverseString(char* str);
int main()
{
char* str = "Hello World";
printf(str);
reverseString(str);
return 0;
}
void reverseString(char* str)
{
int i, j;
char temp;
i=j=temp=0;
j=strlen(str)-1;
for (i=0; i<j; i++, j--)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
printf(str);
}
反向功能很好,问题出在其他地方。
char* str = "Hello World";
在这里, str
指向不变的字符串文字。 它放在程序的数据段中,对其内容的修改将始终导致崩溃。
尝试这个:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reverseString(char* str);
int main()
{
char str [256];
strcpy_s(str, "Hello World");
printf(str);
reverseString(str);
return 0;
}
void reverseString(char* str)
{
int i, j;
char temp;
i=j=temp=0;
j=strlen(str)-1;
for (i=0; i<j; i++, j--)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
printf(str);
}
另一个选择是strrev()函数 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.