#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的初学者
答案 0 :(得分:3)
while(*(str+n)!='0')
n++;
我们的想法是遍历整个数组的整个数组
您应该检查\0
。因为c字符串是空终止的(\0
)
while(*(str+n)!='\0')
^^
另外,在旁注中您应该从main()
函数返回一个与问题无关的值,但这是一个很好的做法。
答案 1 :(得分:1)
c == '\0'
答案 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')