Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c语言中带循环和数组的字符串反转_C_Arrays_For Loop - Fatal编程技术网

c语言中带循环和数组的字符串反转

c语言中带循环和数组的字符串反转,c,arrays,for-loop,C,Arrays,For Loop,我只想使用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);

我只想使用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;
}
intmain(){
char a[]=“这是一个男人”;
charb[30];
int p=sizeof(a)/sizeof(a[0]);
对于(int i=p-1;i>0;i--){

对于(int j=0;j使用
循环::

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);
}
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 ;
 }
}
#包括
int main(){
字符str[]=“str to rev”;
char revstr[12]={'\0'};
int i,j;
int长度=strlen(str);
j=0;
对于(i=length-1;i>=0;i--){
revstr[j]=str[i];
j=j+1;
}
printf(“%s”,revstr);
返回0;
}
1)在第一个
循环中,必须达到0(
i>=0

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) 正如其他答案中所说,你只需要使用一个循环,而不是两个循环

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);

作为初学者,您应该使用
strlen
来查找字符串长度。此外,您可以在不使用内部for循环的情况下解决此问题。请发布您得到的错误输出。
i
应该一直持续到
i>=0
除非您想省略第一个字符
myStrLen
?您还应该定义该字符,否则此代码无效不会链接。@Anishsane:此人不想使用内置函数,这样他就可以编写自己版本的myStrLen,我相信将使用strlen,char revstr[12]={'\0'}..除此之外。一切都很好..谢谢兄弟。。
b[j]='\0'; // add this
printf("array is %s",b);
return 0;
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);