Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Не сочитание типов char и char


Автор: Kirgston 30.4.2009, 15:12
Всем доброго времени суток! Я начал писать игру... но уже на первых порах что то не ясное творится... вообщем смотрите сами =)

Код

char sel_town()
{
   int i;
  char rasa_t[MAX_PATH];
  char gor[MAX_PATH];
  char gor2[MAX_PATH];
  char gor3[MAX_PATH];
  char gor4[MAX_PATH];
  char gor5[MAX_PATH];
  char gor6[MAX_PATH];
  system("cls");
  CharToOem("Ну что же... пора и тебе пойти по пути. Но по каком пути - выбирать тебе. Выбор у тебя конечно не большой... ",gor);
  CharToOem("но выбрав его ты выберешь свою дальнеюшую жизнь! Итак в каком городе тебе хочется начать свои подвиги?",gor2);
  CharToOem("\n\n\n\n\n1.Песчаные Варвары - здесь никто не полагается на ум. Только ярость и сила руководит всеми.",gor3);
  CharToOem("\n2.Долина Эльфов - лучшие разведчики и ловкачи обитают сдесь.",gor4);
  CharToOem("\n3.Горные Гномы - залог успеха гномов - ихняя торговля.",gor5);
  CharToOem("\n4.Альянс - Империя Людей. Здесь обитают легендарные кузнецы и паладины.\n",gor6);
  write(gor,50);
  write(gor2,50);
  write(gor3,50);
  write(gor4,50);
  write(gor5,50);
  write(gor6,50);
  scanf("%d",&i);
  if ((i<1) && (i>4)) {
      sel_town();
  }
  else
  {
  switch (rasa) {
      case 1: CharToOem("Варавар-",rasa_t); break;
      case 2: CharToOem("Человек-",rasa_t); break;
      case 3: CharToOem("Эльф-",rasa_t); break;
      case 4: CharToOem("Гном-",rasa_t); break;
  default:
      ;
  }
  rasa_n=rasa;
  return(rasa_t);
  }
}


Тут я сканирую цифры + от их зависимости записываю в раса_т разные значения. А после возвращаю их. 

Код

void newg()
{
rasa=sel_town();
printf("%s",rasa);
getch();
}


Но когда я потом стараюсь присвоить... вылетает
[BCC32 Error] File1.c(114): E2349 Nonportable pointer conversion

раса обявлена как

Код

//---------------------------------------------------------------------------
#include <conio.h>
#include <windows.h>
#include <stdio.h>
#include <stdio.h>
#include <string.h>
#include <cstring>
#pragma hdrstop

#include <tchar.h>
//---------------------------------------------------------------------------

#pragma argsused
char rasa;


Заранее очень благодарен!

Автор: Fazil6 30.4.2009, 15:17
Код

char sel_town() // что тут возвращаем?
{
   int i;
  char rasa_t[MAX_PATH];
 ......
  // bla- bla
  return(rasa_t); // что тут возвращаем?

}

Автор: Kirgston 30.4.2009, 15:27
Ну так там же написано в обеих вариантах char. Переменная типа char и возвращаемое значение типа char.

Автор: Fazil6 30.4.2009, 15:28
Цитата(Kirgston @  30.4.2009,  15:12 Найти цитируемый пост)
CharToOem("\n3.Горные Гномы - залог успеха гномов - ихняя торговля.",gor5);

да уж...

Автор: Lazin 30.4.2009, 15:31
Цитата(Fazil6 @  30.4.2009,  15:17 Найти цитируемый пост)
char rasa_t[MAX_PATH];


Цитата(Kirgston @  30.4.2009,  15:27 Найти цитируемый пост)
Переменная типа char


возможно для тебя будет сюрпризом, что переменная rasa_t - массив символов
 smile 

Автор: Fazil6 30.4.2009, 15:36
Цитата(Kirgston @  30.4.2009,  15:27 Найти цитируемый пост)
Ну так там же написано в обеих вариантах char. Переменная типа char и возвращаемое значение типа char. 

совсем не это там написано. 
rasa_t разве имеет тип char?

Добавлено через 2 минуты и 26 секунд

Цитата(Lazin @  30.4.2009,  15:31 Найти цитируемый пост)
возможно для тебя будет сюрпризом, что переменная rasa_t - массив символов

насколько я разбираюсь в медицине, похоже, что главный сюрприз здесь в том, что char - это не строка 

Автор: Lazin 30.4.2009, 15:47
you has been raped in three last comments

Автор: Kirgston 30.4.2009, 15:50
да в принципе я понимаю что чар(макс_патч) это масив. Но если я запишу ::rasa=rasa_t; то будет такая же ошибка. Хотя и то и другое масив символов

Автор: Lazin 30.4.2009, 15:57
массивы нельзя присваивать, их можно копировать, например с помощью ф-ии memcpy

Цитата(Kirgston @  30.4.2009,  15:50 Найти цитируемый пост)
Но если я запишу ::rasa=rasa_t; то будет такая же ошибка. Хотя и то и другое масив символов

Цитата(Kirgston @  30.4.2009,  15:12 Найти цитируемый пост)
char rasa;

 smile

Добавлено через 9 минут и 40 секунд
user posted image

Автор: Fazil6 30.4.2009, 16:46
Цитата(Kirgston @  30.4.2009,  15:50 Найти цитируемый пост)
да в принципе я понимаю что чар(макс_патч) это масив. Но если я запишу ::rasa=rasa_t; то будет такая же ошибка. Хотя и то и другое масив символов 

почитай книгу какую-нибудь. Ничего ты не понимаешь. Твой ::rasa никакой не массив

Автор: Kirgston 1.5.2009, 13:04
Да спасибо тогда просто не увидел. Уже всё сделал с помощью strcpy =)

Автор: andrew_121 1.5.2009, 14:45
Я выпал smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)