после половины программы получается палиндром - PullRequest
2 голосов
/ 09 июля 2010

Я сам сделал функцию strrev.Во время компиляции он говорит, что код в функции 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];

 }
}

Ответы [ 2 ]

17 голосов
/ 09 июля 2010

Вы использовали оператор сравнения == вместо оператора присваивания =.Таким образом, компилятор прав: xstrrev просто выполняет сравнение, результаты которого игнорируются, а не задание.

Что касается вашего второго вопроса, это не тот форум, на котором его можно задать, только ваш учитель может сказать, чторазрешено, а что нет.Однако реализация strlen - это ровно две строки кода.

2 голосов
/ 09 июля 2010

Слушайте предупреждения вашего компилятора - надеюсь, что-то было об этой проблеме.Я получил следующее:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...