Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2010, 20:26   #1
Veronik@
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 27
По умолчанию подскажи те где ошибка

#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"

int main()
{
char s1[100], *rez, *temp;
int length;
puts("Vvedite stroku");
gets(s1);
length = strlen(s1);
printf("dlina - %d\n", length);
if(!(length % 4))
{
puts("stroka kratna 4");
rez = malloc((s1+1) * sizeof(char));
temp = &s1[s1/2];
strcpy(rez, temp);
strncpy(temp, s1, temp);
strcat(rez, temp);
puts(rez);
return 0;
}
puts(s1);
return 0;
}
Veronik@ вне форума Ответить с цитированием
Старый 08.11.2010, 20:31   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

rez = malloc((s1+1) * sizeof(char));
counter вне форума Ответить с цитированием
Старый 08.11.2010, 20:34   #3
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"

int main()
{
      char s1[100], *rez, *temp;
      int length;
      puts("Vvedite stroku");
      gets(s1);
      length = strlen(s1);
      printf("dlina - %d\n", length); // До сюда все адекватно

      if(!(length % 4))
      {
            puts("stroka kratna 4");
            rez = malloc((s1+1) * sizeof(char)); // s1+1 - это указатель на s1[1]! Наверное, имелось ввиду length+1
            temp = &s1[s1/2]; // Та же ошибка
            strcpy(rez, temp);
            strncpy(temp, s1, temp); // strncpy - прочитайте
            strcat(rez, temp);
            puts(rez);
            // return 0; // Лишнее..., лучше через else
      }
      else puts(s1);
      return 0;
}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 08.11.2010, 20:36   #4
Veronik@
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 27
По умолчанию

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char s1[100], *rez, *temp;
int length;
puts("Vvedite stroku");
gets(s1);
length = strlen(s1);
printf("dlina - %d\n", length);
if(!(length % 4))
{
puts("stroka kratna 4");
rez = malloc((length+1) * sizeof(char));
temp = &s1[length/2];
strcpy(rez, temp);
strncpy(temp, s1, length/2);
strcat(rez, temp);
puts(rez);
return 0;
}
puts(s1);
return 0;
}



всёровно выдаёт ошибки....
Veronik@ вне форума Ответить с цитированием
Старый 08.11.2010, 20:38   #5
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Оформите код и напишите ошибки, какие и где.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 08.11.2010, 20:42   #6
Veronik@
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 27
По умолчанию

#include <stdafx.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
char s1[100], *rez, *temp;
int length;
puts("Vvedite stroku");
gets(s1);
length = strlen(s1);
printf("dlina - %d\n", length);
if(!(length % 4))
{
puts("stroka kratna 4");
rez = malloc((length+1) * sizeof(char)); // error C2440: =: невозможно преобразовать 'void *' в 'char *'

temp = &s1[length/2];
strcpy(rez, temp);
strncpy(temp, s1, length/2);
strcat(rez, temp);
puts(rez);
return 0;
}
puts(s1);
return 0;
}
Veronik@ вне форума Ответить с цитированием
Старый 08.11.2010, 20:47   #7
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Вы, наверное, используете компилятор С++, а пишите на С, где менее строгая типизация, вот он и не может преобразовать void*, возвращаемый С-шным malloc-ом в char*. Соответственно:
Код:
rez = (char*)malloc((length+1) * sizeof(char));
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 08.11.2010, 20:50   #8
Veronik@
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 27
По умолчанию

а что есть разница???
у нас в универе преподша после универа первый год...ничё не обьясняет..
Veronik@ вне форума Ответить с цитированием
Старый 08.11.2010, 20:52   #9
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
а что есть разница???
Между С и С++? Есть.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 08.11.2010, 20:58   #10
Veronik@
Пользователь
 
Регистрация: 24.10.2010
Сообщений: 27
По умолчанию

я канешно понимаю что уже наглею ....но можете еще помочь?...в другой задече там ошибки не понятные...
Veronik@ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где ошибка? С++ Namolem Помощь студентам 1 15.09.2010 18:59
Где ошибка? T-dayne Помощь студентам 2 10.02.2010 16:52
Где ошибка? stas77 Microsoft Office Excel 11 02.11.2009 18:26
Подскажи какой-нибудь нормальный плагин... Mr.Qwerty Софт 0 14.07.2009 23:01
где ошибка? Prophet23 Паскаль, Turbo Pascal, PascalABC.NET 0 20.05.2009 23:20