Структури, файлове

8 views
Skip to first unread message

Asmodean

unread,
Jan 18, 2012, 1:31:28 PM1/18/12
to ТУЕС Програмно осигуряване 2011
Здравейте, имам две бързи въпросчета. Защо когато декларирам структура
ми дава грешка, ако се опитам да дефинирам някоя от променливите
вътре?
Пример:
struct proba
{
...
int p=3;
}

Трябва ли и при деклариране да използвам модела [u]име-на-
структура.име-на-променлива[/u]
(в този случай proba.p=3).

Вторият ми въпрос е как да заредя файл с разширение .c и да използвам
променливите вътре.(да ги променям, изтривам или просто извеждам)
Прочетох в учебника, но след като използвах начина, описан вътре, ми
даде грешки.
FILE* fp;
FILE* fopen(char *nam, char *mode);

Извиках fopen така:
fp=fopen(proba.c, w)
Пробвах и с кавички и всякак. Дава ми някакви грешки, а ако се опитам
да изпринтя някоя променлива от proba.c ми казва, че няма такава. В
учебника няма нищо за обработка на данни от файл.

Message has been deleted
Message has been deleted

TriEdgeAI

unread,
Jan 19, 2012, 4:13:25 AM1/19/12
to ТУЕС Програмно осигуряване 2011
Щото дефинирането става само ако са static променливите. Когато имаш
non-static членове на структурата няма как да имат първоначални
стойности, тъй като при декларацията на променлива с тип структура не
се прави инициализация. Може да си направиш нещо такова:
proba* proba_create()
{
 proba* temp = new proba;
 temp->p = 3;
 return proba;
}


Отностно втория ти въпрос:
В C/C++ когато отваряш и четеш файлове тяхното разширение и тип са
абсолютно без никакво значение. От гледната точка на програмата ти,
просто се четат некфи стрингове и байтове, който само ти можеш да
кажеш какво значат. Това, че отваряш .c файл въобще не означава, че
програмата ти разбира нещо от него. За нея е просто текст. Ако искаш
да вземеш стойности на променливи от .c файл по време на изпълнение
трябва да си направиш някакъв алгоритъм, който да parse-ва и
обработва
файла. Ако искаш да включиш променливи от външен файл по време на
компилиране можеш да ползваш #include "path/blabla/banan.h" примерно.
Отностно кавичките:
Когато имаш някфо слято име без кавички -> компилатора го възприема
като име на променлива или функция
Когато имаш нещо заградено с двойни кавички -> ... като стринг
Когато имаш буква заградена с единични кавички -> ... като буква
(ASCII кода й)

В твоя случай обаче w трябва да е заградено с двойни кавички, защото
има опция този аргумент да не е само една буква.
http://www.cplusplus.com/reference/clibrary/cstdio/fopen/

Nikola Geneshki

unread,
Jan 19, 2012, 5:29:20 AM1/19/12
to cprogrammi...@googlegroups.com
Ако искаш да използваш променливи в С файл, трябва да го инклууднеш подобно на stdio.h. Синтаксиса е следния:
#include "file.c"
Използвай кавички вместо <> за да окажеш, че файлът ти е в текущата директория, а при библиотеките, т.е. не където е stdio.h.
Ако искаш да промениш file.c тогава го отваряш с fopen.


2012/1/19 TriEdgeAI <trie...@gmail.com>

Asmodean

unread,
Jan 21, 2012, 2:32:36 PM1/21/12
to ТУЕС Програмно осигуряване 2011
Много благодаря за оказаната помощ!
Reply all
Reply to author
Forward
0 new messages