BG Development


Страници: (10) [1] 2 3 ... последна »  ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Защо не работи по този начин?
georgib1
Публикувано на: 07-01-2017, 14:19
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 447
Регистриран на: 26.09.16



Здрасти, правя програма да се въвеждат/прочитат оценки на ученик във файл.Нещата във файла са записани така:
Georgi
5
6
3
2
4
Mitko
...
.Когато трябва да чета, избирам само един ученик, на който да видя оценките.И като стигна до друг, спирам да чета.Много се чудих как да го направя и действах по този нелеп начин:
На мен int-a ми е 4 байта, а оценките във файла са от тип int.И направих така, че се проверява размера на реда, който сме взели и ако е 4 го изписва и продължава, а ако не е - спира функцията и цикъла.Защо не работи, ако може някой по-добър метод?
Ето кода:
CODE

void fileToReadFrom()
{
      ifstream fileToReadFrom;
      fileToReadFrom.open("ocenki.txt");
      cout <<"Vuvedete imeto na uchenika, na koito iskate da vidite ocenkite:";
      string name;
      cin >> name;
      string storeLines;
   
    while(getline(fileToReadFrom,storeLines))
         {
   getline(fileToReadFrom,storeLines);
   
      
   if(storeLines==name)
   {
         while(1)
      {
              getline(fileToReadFrom,storeLines);
               int sizeOfLine = sizeof(storeLines);
               if (sizeOfLine==4)
               {
                     cout <<storeLines;
               }
               else
               {
                     break;
                  }
}
                  
                  
      }
      
      }
      
      fileToReadFrom.close();
}

Другото, което ме притеснява е да не се случи така, че името(другото) също да е 4 байта и да прочита него и надолу също.

Това мнение е било редактирано от georgib1 на 07-01-2017, 14:52


--------------------
Никога не мисли за бъдещето. То идва достатъчно бързо.


it ain't about how hard ya hit. It's about how hard you can get it and keep moving forward. How much you can take and keep moving forward. That's how winning is done!
PMEmail Poster
Top
bvbfan
Публикувано на: 07-01-2017, 15:27
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2168
Регистриран на: 08.12.13



На C може да се напишат големи глупости, ти трябва да знаеш колко байта четеш - не обратно. Виж read / get


--------------------
QUOTE (Bender @ 23-04-2015, 19:11)
Xamarin: ЛАПАЙ!
Ти: Добре...
PMEmail Poster
Top
georgib1
Публикувано на: 07-01-2017, 16:52
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 447
Регистриран на: 26.09.16



QUOTE (bvbfan @ 07-01-2017, 15:27)
На C може да се напишат големи глупости, ти трябва да знаеш колко байта четеш - не обратно. Виж read / get

Е като запиша реда в променливата и прочета размера на променливата не намирам ли и размера на реда във файла?


--------------------
Никога не мисли за бъдещето. То идва достатъчно бързо.


it ain't about how hard ya hit. It's about how hard you can get it and keep moving forward. How much you can take and keep moving forward. That's how winning is done!
PMEmail Poster
Top
dvader
Публикувано на: 07-01-2017, 17:22
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 3266
Регистриран на: 12.07.05



Сложи различни префикси на имената и оценките...
Префикса за оценката може да е името на предмета:
Mathematic=123
Physics=321
Name=Иван
### (това за разделител на записи).

Ref:
https://en.wikipedia.org/wiki/Serialization


--------------------
I find your lack of faith disturbing
PM
Top
georgib1
Публикувано на: 07-01-2017, 18:26
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 447
Регистриран на: 26.09.16



Добре, ще се оправя.А само да питам - възможно ли е, когато записваш във файла, стария запис да си остане, а да не се трие?


--------------------
Никога не мисли за бъдещето. То идва достатъчно бързо.


it ain't about how hard ya hit. It's about how hard you can get it and keep moving forward. How much you can take and keep moving forward. That's how winning is done!
PMEmail Poster
Top
relax4o
Публикувано на: 07-01-2017, 18:36
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 973
Регистриран на: 04.04.07



Добави ios::app мод на open().


--------------------
Бисери :D

QUOTE (oveRLuckEd)
Ползваш някоя нова версия на PHP, която е вече ооп ориентирана и заради това ти я изкарва тази грешка.


QUOTE (nbacool2)
Щом няма input полета, значи няма откъде да се направи SQL инжекция Very Happy
PM
Top
georgib1
Публикувано на: 07-01-2017, 18:38
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 447
Регистриран на: 26.09.16



QUOTE (relax4o @ 07-01-2017, 18:36)
Добави ios::app мод на open().

Мерси.


--------------------
Никога не мисли за бъдещето. То идва достатъчно бързо.


it ain't about how hard ya hit. It's about how hard you can get it and keep moving forward. How much you can take and keep moving forward. That's how winning is done!
PMEmail Poster
Top
georgib1
Публикувано на: 07-01-2017, 20:58
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 447
Регистриран на: 26.09.16



Тва с байтовете ми се гледа много complicated.Мисля да ползвам функцията find.Ще работи ли така?Ако find-не думата, изписва реда?

Това мнение е било редактирано от georgib1 на 07-01-2017, 21:00


--------------------
Никога не мисли за бъдещето. То идва достатъчно бързо.


it ain't about how hard ya hit. It's about how hard you can get it and keep moving forward. How much you can take and keep moving forward. That's how winning is done!
PMEmail Poster
Top
georgib1
Публикувано на: 07-01-2017, 21:08
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 447
Регистриран на: 26.09.16



Записвам реда в string правя проверката с find
CODE

if (found!=std::string::npos)

го изписвам и скачам на другия ред?


--------------------
Никога не мисли за бъдещето. То идва достатъчно бързо.


it ain't about how hard ya hit. It's about how hard you can get it and keep moving forward. How much you can take and keep moving forward. That's how winning is done!
PMEmail Poster
Top
georgib1
Публикувано на: 07-01-2017, 21:44
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 447
Регистриран на: 26.09.16



/del

Това мнение е било редактирано от georgib1 на 07-01-2017, 23:24


--------------------
Никога не мисли за бъдещето. То идва достатъчно бързо.


it ain't about how hard ya hit. It's about how hard you can get it and keep moving forward. How much you can take and keep moving forward. That's how winning is done!
PMEmail Poster
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (10) [1] 2 3 ... последна » Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2015 | BG Development | All Rights Reserved
RSS 2.0