Официальный сайт студ.городка НГТУ
Программирование и БД » [C] Помогтте 

#1  17.02.07 14:57

[C] Помогтте

Код::

#include <stdio.h>
#include <string.h>
#include <conio.h>

main()
{
   char s[20];
   long i;
   char const *pas="exit";
   randomize();
   do
   {
      gets(s);
      if (s == pas) {printf("OK: '%s' /n", s);};
   }
   while (s != "exit");
   getch();
}

Код::

if (s == pas) {printf("OK: '%s' /n", s);};

не работает! почему?

Offline

#2  17.02.07 15:13

Re: [C] Помогтте

strcmp(s,pas) ?

Offline

#3  17.02.07 15:30

Re: [C] Помогтте

APOCALYPSES написал(а):

не работает! почему?

и не сработает никогда. Ты сравниваешь значения указателей. Адреса т.е.
а для сравнения строк - strcmp

Offline

#4  18.02.07 19:49

Re: [C] Помогтте

ну и "слэш-эн" пишется так: \n

Offline

#5  18.02.07 20:28

Re: [C] Помогтте

Ну и кавычки одинарные ставятся так: \'
Гы, а рандомиз тут зачем?

Offline

#6  19.02.07 12:24

Re: [C] Помогтте

в жизни бы не догадался про "strcmp"

Offline

#7  19.02.07 13:33

Re: [C] Помогтте

APOCALYPSES, прежде чем заниматься программописанием и вопросозадаванием, прочти книгу Кернигана и Ритчи "Язык программирования Си".

Offline

#8  19.02.07 21:44

Re: [C] Помогтте

Код::

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <alloc.h>
#include <stdlib.h>

struct TData
{
	char* name;
	int id;
   float num;
};

	TData Data;
   TData *pData;

/************************************ HELP ************************************/

void help()
{
	printf("************************************ HELP ************************************\n");

	printf("Help:\n");
	printf("\"file open\", \"fo\" \tLoad file data base\n");
   printf("\"file save\", \"fs\" \tSave file data base\n");
   printf("\"new base\", \"nb\" \tCreate new base\n");
   printf("\"list\", \t List the base\n");
   //printf();

}

/********************************** NEW BASE ************************************/

void n_b()
{
	printf("********************************** NEW BASE ************************************\n");
	char com[20];
   int id;
   float num;
   TData Tmp;
	printf("\tNew Base\t\n");
   scanf("Enter name base: %s", Data.name);
   Data.id = 1;
   pData = (TData*)calloc(Data.id, sizeof(TData));
   do
   {
      printf("\tEnter comand: ");
      gets(com);
      if (strcmp(com, "add")==0)
      	{
         	printf("\t\tEnter Name: ");
            gets(Tmp.name);
      		printf("\t\tEnter id: ");
            gets(com);
            Tmp.id = atoi(com);
      		printf("\t\tEnter num: ");
            gets(com);
            Tmp.num = atof(com);
            pData = (TData*)realloc((pData), Data.id++);
            pData[Data.id-1] = Tmp;
            printf("Tmp.name:%s\n", pData[Data.id-1].name);
      	};
   }
   while (strcmp(com, "") != 0);

}

/********************************** List **********************************/

void list()
{
	int i;
   printf("************************************ List ************************************\n");
   for (i=0; i < Data.id; ++i)
   	{
      	printf("%i\tName: \t%s\n", i, (char*)pData[i].name);
         printf("%i\tId: \t%i\n", i, pData[i].id);
         printf("%i\tNum: \t%f\n", i, pData[i].num);

      }
}

/******************************** Command *********************************/

void com(char com[20])
{
	printf("Command: %s\n", com);
   if (strcmp(com, "help")==0) help();
   if ((strcmp(com, "nb")==0) || (strcmp(com, "new base")==0)) n_b();
   if (strcmp(com, "list")==0) list();
}

main()
{
   char s[20]=" ";
   long i;
   char const *pas="exit";
   do
   {
   	printf("\nEnter you command: ");
      gets(s);
      if (strcmp(s, "")!=0) {com(s);};
   }
   while (strcmp(s, "exit") != 0);
   printf("\n\t\tExit: press any key\n");
   getch();
   free(pData);

Не остаётся pData.name

Offline

#9  20.02.07 13:41

Re: [C] Помогтте

отладка знаешь что такое?

Offline

#10  20.02.07 14:55

Re: [C] Помогтте

scanf("Enter name base: %s", Data.name);

а это че такое?! ))))

ты примеры кода когда-нибудь в книгах смотрел? за такой код под трибунал отдавать надо)))

Offline

#11  21.02.07 17:23

Re: [C] Помогтте

zombie написал(а):

scanf("Enter name base: %s", Data.name);

а это че такое?! ))))

ты примеры кода когда-нибудь в книгах смотрел? за такой код под трибунал отдавать надо)))

Может подскажешь как правильно?

Offline

#12  21.02.07 17:25

Re: [C] Помогтте

Код::

printf("%i\tName: \t%s\n", i, (char*)pData[i].name);

здесь выводит "чушь", вместо нормальной строки.

Offline

#13  21.02.07 17:42

Re: [C] Помогтте

Код::

printf("%i\tName: \t%s\n", i, pData[i]->name);

Так наверно нужно.

Offline

#14  21.02.07 18:06

Re: [C] Помогтте

APOCALYPSES, рыдаю. Ты ведь вообще ничего не смыслишь. Я же сказал, сначала книгу почитай, потом сюда лезь. А то демонстрируешь всем полное непонимание самых элементарных основ программирования на С.
Смотри на определение своей структуры, там указатель на char. Под него ты память выделил calloc'ом, который забил все выделенную память нулями. Куда указывает твой указатель? Правильно, в никуда. А ты пытаешься в него писать scanf'ом, потом прочитать printf'ом. Вот и результат.

GrAnD, не Андрюха не так, у него все правильно, просто указатель мусор содержит опять же.

Offline

#15  21.02.07 18:41

Re: [C] Помогтте

GrAnD написал(а):

Так наверно нужно.

(p*)structure.name и structure->name это одно и то же

Offline

#16  22.02.07 00:16

Re: [C] Помогтте

APOCALYPSES ты наверное раньше на паскале программировал?

Offline

#17  22.02.07 00:34

rzk
Профиль

Re: [C] Помогтте

Ага! признавайся APOCALYPSES приверженцем какой школы программирования ты являешься? Кто твой, не побоюсь этого слова, оябун?

Offline

#18  22.02.07 12:31

Re: [C] Помогтте

Pascal, Delphi

Offline

#19  25.02.07 17:54

Re: [C] Помогтте

Draloskop написал(а):

прежде чем заниматься программописанием и вопросозадаванием, прочти книгу Кернигана и Ритчи "Язык программирования Си".

хорошая, а главное понятливая книга? мне нужно знать. но пока не умею программировать. с неё начинать?)

Offline

#20  25.02.07 19:30

Re: [C] Помогтте

Понятливая, очень.
Начинать нужно однозначно с нее, все разъяснено как надо. Тем более это создатели языка, кто ж сможет лучше описать язык.
Только смотри, нужно 3-е русское или 2-е английское издание, в более ранних информация устаревшая.

Offline

#21  26.02.07 10:23

Re: [C] Помогтте

можно и с Подбельского начать... тоже хорошо написана книга, да и найти ее раз плюнуть...

Offline

#22  26.02.07 10:49

Re: [C] Помогтте

Не знаю, лично мне Подбельский не понравился.

Offline

#23  26.02.07 16:11

Re: [C] Помогтте

Укроп написал(а):

Draloskop написал(а):

рыдаю. Ты ведь вообще ничего не смыслишь.

APOCALYPSES написал(а):

char const *pas="exit";

APOCALYPSES написал(а):

if (s == pas)

это что курицелапый код )

Это не я бляяя...

Offline

#24  26.02.07 16:23

Re: [C] Помогтте

я по Подбельскому училась, но лучше Валентины Павловны никто не научит

Offline

#25  26.02.07 23:15

Re: [C] Помогтте

Что то книгу Герберта Шилдса никто не упомянул, обижаете

Offline

Программирование и БД » [C] Помогтте 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.039 сек.
Выполнено 14 запросов.