[英]Reversing a string in c results in segmentation fault
我试图在c中反转一个字符串,但是我遇到了段错误,核心转储错误,无法找出错误。
#include<stdio.h>
#include<string.h>
void main(){
char inputstr[100];
int i = 0;
char revstr[100];
printf("Give me something to reverse!!:\t");
gets(inputstr);
printf("You entered %s\n", inputstr);
int lenstr = strlen(inputstr) - 1;
while(lenstr >= i){
strcpy(revstr, inputstr[lenstr]);
lenstr = lenstr -1;
}
printf("%s\n", revstr);
}
我正在尝试在c中反转字符串,但是我得到了分段
strcpy()
用于将字符串复制到目标字符串。 因此,参数为char*
和const char*
。 但是在您的代码中,您正在发送一个char
作为strcpy()
函数的第二个参数。
您完全不需要使用strcpy()
函数来反转字符串,只需一个for
循环就足以实现反转字符串。
for
循环示例:
for (i = 0; i <= lenstr; i++)
{
revstr[i] = inputstr[lenstr - i];
}
revstr[i] = '\0';
strcpy()应该做什么?
这是我的反向版本:
void reverse(char * s, int len)
{
char c,*end =s+len-1;
while (s<end)
{
c=*s;
*s++=*end;
*end--=c;
}
}
使用XOR,您可以避免声明临时c变量...但是它不可重定义,我很想知道是否可以改善性能...我选择传递len,而不是在内部进行计算,因为您可以反转子字符串,或者因为长度已经可用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.