На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Работа со структурами+strcpy , из char в char
    Добрый день.
    Помогите разобраться! Уже пролазил в поиске, но даже точно не знаю, где искать.
    ExpandedWrap disabled
      #include <stdio.h>
      #include <string.h>
      #define NAME_SIZE 256
       
      typedef struct {
              int id;
              char name[NAME_SIZE];
              } Data;
      int main(){
          Data postoi[100];
          printf("Vvedite nomer");
          scanf("%d", &postoi->id);
          printf("Vvedite bykvi");
          scanf("%s", postoi->name);
          printf("%d%s", postoi->id, postoi->name);
          printf("Zapisano v stryktyry postoi\n");
          
          char tempa[NAME_SIZE];
          tempa = *postoi->name;
          // strcpy(tempa, postoi->name); эта строка в Visual Studio не катит
          
          
          printf("Perezapisano vo vremenyu peremenyu, %s\n", tempa);
          Data vremennai[100];
          strcpy(vremennai->name, tempa);
          printf("Zapisano v novyu stryktyry%s\n", vremennai->name);
          
          
          int p;
          scanf("%d", &p);
          
          return 0;
          }


    Суть проблемы, хочу записать из структуры символы в переменную, потом из переменной, переписать символы в новую структуру.
    На этот код компилятор выдаёт :
    incompatible types in assignment of `char' to `char[256]'

    У меня по ходу проблема с осознанием значений указателей и адресов...Подскажите, как правильно выполнить копирование. И правильно ли здесь используются указатели?
      Начни с прочтения какой-нибудь книжки.
      Здесь проще сказать что правильно, чем что неправильно - неправильно практически всё.

      Добавлено
      Цитата muskos @
      tempa = *postoi->name;

      Вместо этого должно быть:
      ExpandedWrap disabled
        strncpy(tempa, postoi[N].name, sizeof(tempa));
        tempa[sizeof(tempa)/sizeof(tempa[0])-1]=0;

      или просто
      ExpandedWrap disabled
        strncpy(tempa, postoi[N].name, 100);
        tempa[99]=0;

      Где N - индекс элемента массива с которым ты хочешь работать.
        Ты пишешь:
        ExpandedWrap disabled
          tempa = *postoi->name;

        tempa имеет тип char*, postoi->name имеет тип char*, но ты это дело разыменовываешь и получаешь char. Стоит ли удивляться, что компилятор выдает ошибку?
          awax, какой строчкой я это делаю?:(
            Той, что находится перед закомментированной :D
            Закомментируй ее, а ту что закомментирована, разкомментируй.
            Сообщение отредактировано: awax -
              Я хотел вот cppasm'у сказать ещё...
              строчка strcpy в визуал студио не работает(
              В деве без того, что awax называет разименовать, работает нормально. Т.е. если раскоментить строчку и убрать разименовывание...
              Так а что делать?:( Как сделать, что бы заработало?

              Добавлено
              Там суть вообще, надо сделать пузырьковым методом...Это всё товарисчу. у него не получается сохранить строку из структуры в отдельную строку, что бы потом отпузырить её и удалить...
                Закомментируй ее, а ту что закомментирована, разкомментируй.
                  в Devc++ работает
                  в Microsoft Visual Studio2008 не работает
                    Компилируется?
                      Цитата muskos @
                      strcpy(tempa, postoi->name);

                      Вот это не работает, postoi - это массив, а не структура.
                      У него нету поля name.
                      Замени на strcpy(tempa, postoi[0].name);
                      Но лучше так как я написал выше.
                        to awax сорри, что долго у самого вс нету(
                        error C3861: 'strcpy': identifier not found
                        вот что ругает на эту строчку...
                        может есть другой подход...Опишу суть задания и логику...

                        Саздаём файл, в него записываем структуры...там к примеру имя фамилия и номер...
                        надо прочитать из файла...это готово.
                        надо записать в файл...это готово.
                        надо удалить из файла...фатал
                        надо переписать в файле....фатал.
                        Начал с удалить...

                        У чувака логика...
                        Считываем структуры из файла.
                        Узнаём с консоли номер строки для удаления.
                        Потом сортируем пузырьковым методом, что бы структура оказалась последней в массиве.
                        Записываем всё назад в файл, без последней структуры.

                        И вот он меня спрашивает...надо переписать структуру во временную переменную, для пузырька. Сам я с методом не знаком.
                        Я пытался реализовать перепись структуры во временную переменную. Он говорит, что целые числа переписывает на легке, а вот с чарами трабл.

                        ПС НИКИТА ЗАРЕГЕСТРИРУЙСЯ НА ФОРУМЕ И САМ ПЕЧАТАЙ БУКВИ!!!

                        Добавлено
                        cppasm спасибо, ща пробую!

                        Добавлено
                        тупо в вижуал Си не пашет STRCPY функция из string.h

                        Добавлено
                        а я вообще решил выбрать цветы в векторе для пригласительного на свадьбу с моей невестой)
                          Цитата muskos @
                          error C3861: 'strcpy': identifier not found

                          #include<string.h> есть?

                          Цитата muskos @
                          И вот он меня спрашивает...надо переписать структуру во временную переменную, для пузырька.

                          Ты не всю структуру переписываешь, а только строку из неё.
                            to cppasm
                            да, подкручиваю я библиотеку эту...
                            microsoft visual studio 2005 или 2008 стоит...

                            2)Да я понял, что только эту строку...так я и пытаюсь реализовать сохранение текста из строки во временную переменную
                              ExpandedWrap disabled
                                #include <stdio.h>
                                #include <string.h>
                                #include <stdafx.h>
                                #define NAME_SIZE 256
                                typedef struct {
                                                int id;
                                                char name[NAME_SIZE];
                                        } Data;
                                int main(){
                                    Data postoi[100];
                                    for (int i=1;i<4;i++){
                                    printf("Vvedite nomer");
                                    scanf("%i",&postoi[i].id);
                                    printf("Vvedite bykvi");
                                    scanf("%s",postoi[i].name);
                                    }  
                                 
                                    char temp[NAME_SIZE];
                                    temp=postoi[1].name // Вопрос в этой строчке
                                        postoi[1].name=postoi[2].name // И в этой.
                                    printf("Perezapisano vo vremenyu peremenyu, %s\n", temp);
                                    
                                    
                                    int p;
                                    scanf("%d", &p);
                                    
                                    return 0;
                                    }


                              Мой вопрос как правильно переменной temp присвоить значение поля name из структуры и postoi[1].name=postoi[2].name и это правельно написать.
                                Nik198, гугли strcpy(). И прочитай уже хотя бы одну книжку по С.

                                Добавлено
                                muskos, вдруг у тебя там "с" русская? Ггг :) Если у тебя крутая студия, как ты говоришь, то ставь Visual Assist последний какой-нибудь, наводи курсор на strcpy() и брякай кнопку "Go". Она тебе файл покажет, в каком она описана, его и заинклудишь.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.0875 ]   [ 16 queries used ]   [ Generated: 28.04.26, 11:11 GMT ]