C中的这个程序(Reversing a String)是什么?

时间:2012-03-09 06:42:13

标签: c arrays string pointers

#include<stdio.h>
int main()
{
    int i,n=0;
char str[]="karthik";
while(*(str+n)!='0')
n++;
for(i=0;i<n/2;i++)
{char temp=str[i];
str[i]=str[n-i-1];str[n-i-1]=temp;
}
printf("%s",str);
}

我知道这是非常常见的问题但是当我尝试时我没有得到任何输出。我知道在下面两行中有一些错误,因为当我使用strlen()时效果很好。

while(*(str+n)!='0')
n++;

所以请说出为什么这样使用是错误的。请记住我是c的初学者

4 个答案:

答案 0 :(得分:3)

while(*(str+n)!='0') 
n++; 

我们的想法是遍历整个数组的整个数组 您应该检查\0。因为c字符串是空终止的(\0

while(*(str+n)!='\0')
                 ^^

另外,在旁注中您应该从main()函数返回一个与问题无关的值,但这是一个很好的做法。

答案 1 :(得分:1)

c == '\0'

中char数组的结尾

答案 2 :(得分:1)

除了null终止问题外,您还必须采用传统的编码方式。一个例子:

#include <stdio.h>

int main()
{
  int i;
  int n=0;
  char str[]="karthik";

  while(str[n] != '\0')
  {
    n++;
  }

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

  printf("%s",str);

  return 0;
}

答案 3 :(得分:0)

在while循环中检查NULL。 改变

while(*(str+n)!='0')

while(*(str+n)!='\0')