我自己制作了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];
}
}
答案 0 :(得分:17)
您使用了比较运算符==
而不是赋值运算符=
。
所以编译器是正确的:xstrrev只执行比较,其结果被忽略,而不是赋值。
至于你的第二个问题,这不是一个正确的论坛,只有你的老师能说出什么是允许的,什么不是。但是,实现strlen
恰好是两行代码。
答案 1 :(得分:2)
听取编译器的警告 - 希望有一个关于这个问题。我得到了以下内容:
VS 2010(MSVC 10),没有关于警告级别的特定选项:
C:\TEMP\test.c(20) : warning C4553: '==' : operator has no effect; did you intend '='?
GCC版本3.4.5,遗憾的是似乎需要某种-W选项(例如-Wall)集:
C:\TEMP\test.c: In function `xstrrev':
C:\TEMP\test.c:20: warning: statement with no effect