簡體   English   中英

字符串反轉,循環和數組在c中

[英]string reverse with loop and array in c

我只想使用for循環和數組來反轉字符串。 不想使用任何預定義的功能。 我使用了以下代碼,但它幾乎沒有。 請分享一些好的建議。

int main(){
char a[]="this is a man";
char b[30];
int p= sizeof(a)/sizeof(a[0]);
for(int i=p-1;i>0;i--){
    for(int j=0;j<p;j++){

   b[j]=a[i];
     }
    }

 printf("array is %s",b);
 return 0;
}
#include<stdio.h>

int main(){

char str[] = "str to rev";
char revstr[12]={'\0'};
int i, j;
int length = strlen(str);
j = 0;
for(i = length-1; i>=0; i--){
  revstr[j] = str[i];
  j = j + 1;
}

printf("%s", revstr);

return 0;
}

1)在你的第一個for循環中,你必須達到0( i>=0

for(int i=p-1;i>=0;i--){

2) a[p-1]包含字符串a[]的空終止( '\\0' )。 並且空終止不應包含在數組反向過程中。 所以在你的第一個循環中你應該從p-2而不是從p-1

完成反轉后,你必須在b數組的末尾添加一個'\\0' (空終止符)

b[j]='\0'; // add this
printf("array is %s",b);
return 0;

3)正如在其他答案中所說,你必須只使用一個循環,而不是2個循環。

int i,j;
for (i=p-2, j=0; i>=0; i--,j++) {
    b[j]=a[i];
}
b[j]='\0';
printf("array is %s",b);

使用while循環::

void main()
{
 char str[100],temp;
 int i,j=0;

 printf("nEnter the string :");
 gets(str);

 i=0;
 j=strlen(str)-1;

 while(i<j)
     {
     temp=str[i];
     str[i]=str[j];
     str[j]=temp;
     i++;
     j--;
     }

 printf("nReverse string is :%s",str);
 return(0);
}

使用for循環::

void StrRev(char *str)
{
 int i, len, endpos;

 len = strlen(str);
 endpos = len-1;

 for(i = 0; i < len / 2; i++)
 {
   char temp = str[i];
   str[i] = str[endpos - i];
   str[endpos - i] = temp ;
 }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM