PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C unter Kdevelop?



Hannibal19xx
17-12-2004, 12:15
Hallo

Ich progge ein wenig in der Schule unter C...dazu nutzen wir Microsoft Visual Studio 6...Unter Linux wurde mir dann kdevelop empfohlen, welches hier auch installiert ist ...

soweit, so gut...
starten etc. geht auch alles einwandfrei...
habt ihr vielleicht ein howto, wie ich nun vom quelltext, bis zur fertigen datei komme?

THX

Boron
17-12-2004, 12:55
Projekt -> Neu -> C-Projekt -> Hello world

Dann programmieren.
Dann compilieren (Projekt erstellen).
Dann ausführen (in Konsole, dann siehst du was passiert).

VanHelsing
17-12-2004, 12:59
gcc -Wall -o WIEDIEDATEIHEISSENSOLL QUELLTEXT.c

Hannibal19xx
17-12-2004, 14:19
Hm...irgendwie funktioniert das alles nicht wirklich...erstmal zeig euch den den Quelltext, welcher unter Windows in der Schule einwandfrei läuft...dann sollte er es auch unter Linux, oder?


/*Projekt 2004/2005
DnS GmbH
Daniels / Schwarz
Kontaktmanager Deluxe 2005
Beta v0.1
Releasetermin: 1. Quartal 2005*/

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



int eingabe,eingabe2,x=0;
FILE *Datei;
FILE *laden;
char weiter='j';


void Version ()

{
printf("Kontaktmanager Deluxe 2005\n");
printf("Version Beta 0.1\n");
printf("DnS GmbH\n");
printf("Bitte Taste druecken...");
getch();
}



void menu ()

{
system("cls");
printf("(1) Kontakte anzeigen\n");
printf("(2) Kontakte hinzufuegen\n");
printf("(3) Terminplaner starten\n");
scanf("%d",&eingabe);

}

void Terminplaner ()

{
system("cls");
printf("(1) Kalendar anzeigen\n");
printf("(2) Termine hinzufuegen\n");
scanf("%d",&eingabe2);

}

void main ()


{
struct contacts
{
char nachname [20];
char Vorname [20];
char Strasse [20];
char Ort [20];
char PLZ [5];
char ICQ [10];
char E_Mail [30];
char Telefon [20];



};
contacts kontakt[30],test[30];

Version();
menu();

switch (eingabe)
{
case 1:

x=0;
while (weiter=='j')
{

Datei =fopen("Kontakte.txt","r");
fread(&test[x],sizeof(contacts),1,Datei);
printf("Kontakt Nr. %d\n",x+1);
printf("%s\n",test[x].Vorname);
printf("%s\n",test[x].nachname);
printf("%s\n",test[x].Strasse);
printf("%s\n",test[x].PLZ);
printf("%s\n",test[x].Ort);
printf("%s\n",test[x].Telefon);
printf("%s\n",test[x].E_Mail);
fclose(Datei);
printf("Weiter?(j/n)");
scanf("%s",&weiter);
x++;
}

break;
case 2:





do
{
Datei = fopen("Kontakte.txt","a");
printf("Kontakt Nr. %d\n",x+1);
printf("Nachname: ");
scanf("%s",&kontakt[x].nachname);
printf("\nVorname: ");
scanf("%s",&kontakt[x].Vorname);
printf("\nStrasse: ");
scanf("%s",&kontakt[x].Strasse);
printf("\nPLZ: ");
scanf("%s",&kontakt[x].PLZ);
printf("\nOrt: ");
scanf("%s",&kontakt[x].Ort);
printf("\nTelefon: ");
scanf("%s",&kontakt[x].Telefon);
printf("\nE-Mail: ");
scanf("%s",&kontakt[x].E_Mail);
fwrite(&kontakt[x],sizeof(contacts),1,Datei);
fclose(Datei);
printf("Weitere Kontakte hinzufuegen?(j/n)");
scanf("%s",&weiter);
x++;
}
while (weiter=='j');





break;


// case 3: Terminplaner();break;
}



}

So, ich habe das Projekt offen und gehe dann auf "Projekt Erstellen (F8)"...dann kommt ne Meldung mit:

In diesem Verzeichnis ist kein Makefile vorhanden. Soll zuerst 'configure' ausgeführt werden?

Diese beantworte ich mit "ja"...

Unten kommt dann folgende Meldung:


cd '/home/dennis/mega_projekt' && LDFLAGS="-T lnkscript crt0.o" CXX=arm-agb-elf-g++ CFLAGS="-nostartfiles" CC=arm-agb-elf-gcc "/home/dennis/mega_projekt/configure" --host=arm-gcc-elf --build=i386 && cd '/home/dennis/mega_projekt' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -k
Installation der Datei -c
*** Beendet mit Status: 77 ***

Leider weiß ich nicht genau, wie ich das ganze dann in der Konsole ausführen kann...:(

sowatt
17-12-2004, 15:09
Hi,
ist <conio.h> nicht eine Lib die nur unter Win existiert?
Ich glaube das Du da erstmal das Linuxteil suchen musst.

Und void main() ist nun schonlange nicht mehr, die Funktion main
gibt immer ein int zurück.

MfG
sowatt

Hannibal19xx
17-12-2004, 15:12
Leider habe ich, wie gesagt, das ganze in der Schule unter Windows...also von Linux und C nicht wirklich viel Ahnung, weißt du zufällig, wie die Bibliothek unter Linux heißt?
Und wie meinst du das mit main?
So kenne ich es aus der Schule^^

Matflasch
17-12-2004, 15:38
Also du hast die Conio.h ja wegen getch().

Du kannst auch die ncurses.h unter Linux nutzen, da ist getch() und der ganze kram drin.
die ncurses-lib ist ein wenig besser als die windows-dinger ;)

Edit:
Ich denke, dass du die String.h auch nicht brauchst, weil du ja char-arrays nutzt :)
Wofür die process.h ist, weiss ich so grad nicht, aber bei dem Programm kannste die glaub ich auch 'erstmal' weglassen....
Also nur:

#include <stdio.h>
#include <ncurses.h>

Hannibal19xx
17-12-2004, 16:16
OK, habe nun nur die beiden Dateien eingebunden, doch wie "starte" ich das programm nun?

Matflasch
17-12-2004, 16:20
KDevelop habe ich nie benutzt, daher kann ich dir da leide nicht weiterhelfen.
Ich bevorzuge die schon geschriebene Methode:

gcc -Wall -o WIEDIEDATEIHEISSENSOLL QUELLTEXT.c

Damit kannste dann wenigstens schonmal testen, ob das Programm so funktioniert, dann können die Fehler schonmal mit KDevelop ausgeschlossen werden, die wegen falschen lib etc entstehen.

Hannibal19xx
17-12-2004, 16:37
die #include <ncurses.h>
scheint er aber auch nicht zu kennen, da...


dennis@linux:~/Documents/Schule/PRG/Projekt> gcc -Wall -o blubb main.c
main.c:9:21: ncurses.h: Datei oder Verzeichnis nicht gefunden
main.c: In function `Version':
main.c:26: warning: implicit declaration of function `getch'
main.c: In function `menu':
main.c:34: warning: implicit declaration of function `system'
main.c: At top level:
main.c:55: warning: return type of `main' is not `int'
main.c: In function `main':
main.c:70: error: `contacts' undeclared (first use in this function)
main.c:70: error: (Each undeclared identifier is reported only once
main.c:70: error: for each function it appears in.)
main.c:70: error: parse error before "kontakt"
main.c:84: error: `test' undeclared (first use in this function)
main.c:111: error: `kontakt' undeclared (first use in this function)

anda_skoa
17-12-2004, 17:01
Am besten du lässt das vorerstmal weg, hat ja nichts wichtiges im Programm zu tun.

Vermutlich ist aber nur das -devel Paket von ncurses nicht installiert.

Ciao,
_

Hannibal19xx
17-12-2004, 17:05
Hast Recht, das -devel paket war nicht installiert...
ich werde wohl in SciTE proggen...verwenden wohl noch mehr ausm Jahrgang...

Reality
17-12-2004, 17:08
system("cls");
Dieser Befehl gibt es glaube ich nur unter DOS!?

Liebe Grüße
Reality

BeS
17-12-2004, 18:15
system("cls");
Dieser Befehl gibt es glaube ich nur unter DOS!?


ja, und ein system Aufruf für sowas ist auch nicht unbedingt eine saubere Sache.
Ein einfaches printf("\ec"); ist da die bessere Methode.

Wegen ncurses, du mußt beim kompilieren auch gegen ncurses linken:
gcc main.c -lncurses

Allerdings mußt du dann auch mit ncurses arbeiten, ein printf geht dann nicht mehr so ohne weiteres. Näheres zu ncurses: http://www.go.dlr.de/linux/LDP/HOWTO/NCURSES-Programming-HOWTO/index.html
Deswegen würde ich dir wie anda_skoa empfehlen das erstmal weg zu lassen.


zu main:
Es gehört schon lange zum C-Standard, das main einen int Wert zurück gibt. Es gehört zum gutem Ton eines Programmes, dass es dem Betriebssystem sagt wie es beendet wurde, bei erfolgreichem Ende gibt man eine 0 zurück.

Matflasch
17-12-2004, 18:28
zu main:
Es gehört schon lange zum C-Standard, das main einen int Wert zurück gibt. Es gehört zum gutem Ton eines Programmes, dass es dem Betriebssystem sagt wie es beendet wurde, bei erfolgreichem Ende gibt man eine 0 zurück.

Ja das ist immer so ne Sache. Es geöhrt sich schon mit der Rückgabe. VIsual C++, also das Studio macht immernoch void main... ;)

BeS
17-12-2004, 18:38
Ja das ist immer so ne Sache. Es geöhrt sich schon mit der Rückgabe. VIsual C++, also das Studio macht immernoch void main... ;)

Das spricht aber eher gegen Visual C++ als für ein void main... :D

Hannibal19xx
19-12-2004, 12:55
Hm...ist es irgendwie möglich, mit irgendeinem Programm unter Linux mit den gleichen Bibliotheken etc. zu arbeiten, wie unter Windows/Visual Studio 6?
Weil ich das Projekt ja unter Windows schreiben muss...

wraith
19-12-2004, 13:11
Hm...ist es irgendwie möglich, mit irgendeinem Programm unter Linux mit den gleichen Bibliotheken etc. zu arbeiten, wie unter Windows/Visual Studio 6?
Weil ich das Projekt ja unter Windows schreiben muss...
Das wäre alles kein Problem, wenn sich eurer Lehrer wenigstens minimal an einen Standard (C oder C++) halten würde.
Obiger Quelltext ist auch näher an C++ als C.

Für die conio.h gibt es eine Implementierung für Linux.
Ich würde jetzt ja gerne auf einen entsprechenden Thread hier verweisen wo der Header verlinkt ist, aber er bringt mir immer nur "Datenbankfehler".
Naja, jedenfalls mit diesem Header und 2,3 kleinen Änderungen läßt sich der Quelltext kompilieren, und er funktioniert auch.

Hannibal19xx
19-12-2004, 13:27
Hm...teile der Lösungen im Quelltext stammen von einem Mitschüler, also nicht alles der Lehrer schuld ;-)
Ich werde mal versuchen das ganze unter SciTE zu compilen...

Hannibal19xx
19-12-2004, 15:10
Nun habe ich als Fehler noch folgendes:


>g++ -pedantic -Os -fno-exceptions -c main.c -o main.o
main.c:55: error: `main' must return `int'
main.c:55: error: return type for `main' changed to `int'
>Exit code: 1

Wie müsste die main denn aufgebaut sein, damit das ganze geht?

cybercrow
19-12-2004, 15:20
int main()
{
....
....
return 0;
}

Hannibal19xx
19-12-2004, 15:28
ok, thx...geht nun ohne Fehler...

Habe also in SciTE compile genutzt und nun muss ich ja Build und Go verwenden, oder?
Dann sieht die Ausgabe aber so aus:


>g++ -pedantic -Os -fno-exceptions -c main.c -o main.o
>Exit code: 0
>make
make: *** Keine Targets angegeben und keine »make«-Steuerdatei gefunden. Schluss.
>Exit code: 2
>main
sh: main: command not found
>Exit code: 127

blackpearl
19-12-2004, 15:56
ja es ist durchaus wahr, das

system("cls")
nur unter DOS funzt, aber unter Linux gibts den Befehl "cls" ja auch gar nicht, dafür gibts folgendes:

system("clear")

Ich hoffe konnte nen bisschen helfen *fgfg*

Bis dann

Manuel Trapp + Liene Trapp

Hannibal19xx
21-12-2004, 13:43
THX, werde ich sicherlich mal gebrauchen können :-)

Nur, wie gehe ich in SciTE nach dem compile vor?
Leider passiert bei Build und Go nichts...

Hannibal19xx
22-12-2004, 12:20
Niemand eine Idee?

tegula
22-03-2005, 19:35
Ist Scite nicht ein Texteditor :confused: Hab den bisher aufjedenfall immer zum bashscripten genommen :)
Glaube kaum, dass man mit dem was kompellieren kann.

Streuner
29-09-2005, 08:27
:D :rolleyes: