[英]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.