在程序的一半之后,它变成了回文

fud*_*din 2 c

我自己做了strrev功能.虽然编译它说func xstrrev()中的代码没有效果.我还想知道,在为分配制作内置函数的副本时,我们可以使用内置函数(其他)吗?因为我在其中使用了strlen().

#include<stdio.h>
#include<conio.h>
#include<string.h>
void xstrrev(char str[]);
void main(void)
{
 char str[30];
 printf("Enter a string:");
 gets(str);
 xstrrev(str);
 printf("\n%s",str);
 getch();
}
void xstrrev(char str[])
{
int i,x;
x=strlen(str);
for(i=0;;i++)
 {

  if(str[i]=='\0')
  {
   break;
  }

str[x-i]=str[i];

 }
}
Run Code Online (Sandbox Code Playgroud)

EFr*_*aim 17

您使用了比较运算符==而不是赋值运算符=.因此编译器是正确的:xstrrev只执行比较,其结果被忽略,而不是赋值.

至于你的第二个问题,这不是正确的论坛,只有你的老师可以告诉你什么是允许的,什么不是.但实现strlen恰好是两行代码.

  • 另外,请记住C中的字符串以null结尾.因此,如果您反转一个字符串,则不希望新字符串以null开头.如果我们调用null'\ 0',你可以反转"abc":''a''b''c''\ 0'`应该变成`'c''''''''0 \' `,而不是''\ 0''c''b''a'.我不愿意这么说,因为这可能是作业的重要组成部分.作为一名程序员,你必须考虑这种小事.并非所有编译都是正确的. (2认同)