PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Text-Datei erstellen (C-Programm)



Earnie
29.08.2009, 21:31
Mein Ziel ist es, ein C-Programm zu schreiben, mit dem ich eine Text-Datei öffne, bearbeite und wieder schließe. Das hier ist natürlich noch nicht das Programm, wie es später aussehen wird, sondern nur das Grundgerüst. Den Quelltext habe ich von hier:

http://www.learn-programming.za.net/programming_c_learn10.html


#include<stdio.h>

int main()
{
FILE *f;
char buf[100];
f = fopen("test.txt","w+"); //w+ Open for reading and writing and create the file if it does not exist. If the file exists then make it blank.
fprintf(f,"Hello");
fgets(buf,sizeof(buf),f);
printf("%s\n",buf);
fclose(f);
return 0;
}

Hier die Fehlermeldungen, die beim Kompilieren auftauchen:


> "make.exe" all

-------- begin --------
avr-gcc (WinAVR 20090313) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling C: main.c
avr-gcc -c -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o
main.c:4: warning: function declaration isn't a prototype
main.c: In function 'main':
main.c:7: warning: implicit declaration of function 'fopen'
main.c:7: warning: assignment makes pointer from integer without a cast

Linking: main.elf
avr-gcc -mmcu=atmega128 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o -std=gnu99 -MMD -MP -MF .dep/main.elf.d main.o --output main.elf -Wl,-Map=main.map,--cref -lm
main.o: In function `main':
D:\Daten\C-Programmierung\Programme\test2/main.c:7: undefined reference to `fopen'
make.exe: *** [main.elf] Error 1

> Process Exit Code: 2
> Time Taken: 00:01

Nach dem Kompilieren habe ich nun Dateien mit den folgenden Endungen:

.c .eep .lss .lst .map .o .sym .hex

Also mein erstes Problem: Es wurde keine .elf Datei geschaffen.
Und mein zweites: Wie starte ich nachher mein Programm? Ich habe ja nur eine .hex-Datei und keine .exe!

vklaffehn
29.08.2009, 22:10
Moin!
Dein Tutorial ist wohl eher für PC's mit einem Betriebssystem gedacht, avr-gcc aber für Microcontroller, da gibt es kein Betriebssystem, was grad mal eine Datei erzeugt, wo auch :-) Genauso Dein Problem mmit der fehlenden .exe, die würde auf einem PC mit DOS/Windows laufen, Deine .hex-Datei mußt Du aber auf Deinen Mikrocontroller ins ROM schreiben. Möchtest Du denn einen µC oder einen PC programmieren??

MfG
Volker

Earnie
29.08.2009, 23:00
Ich möchte die Datei auf einem PC ausführen, nicht auf einem Microcontroller :-) Hätte ich vielleicht dazuschreiben sollen.

PicNick
30.08.2009, 09:40
Der Compiler ist aber fest überzeugt, dass er für einen µC kompiliert.


Compiling C: main.c
avr-gcc -c -mmcu=atmega128 .......................................

was für einen "avr-gcc" auch eher der Normalfall ist


Da dürfte was durcheinander geraten sein

rehbär
30.08.2009, 10:21
Du musst ein Makefile für einen PC benutzen und nicht das für µCs....
Oder du benutzt gcc einfach per Hand, was bei einer Datei auch nicht mehr Aufwand bedeutet....

Earnie
30.08.2009, 12:47
Ich hatte eine Anleitung zum "gcc per Hand benutzen", aber die war total kompliziert. Damit bin ich leider nicht klargekommen.

askazo
30.08.2009, 14:48
Wenn Du C/C++ für den PC programieren willst, bietet sich z.B. Dev-C++ (http://www.bloodshed.net/devcpp.html) an. Versuch's mal damit.

Gruß,
askazo

rehbär
30.08.2009, 14:51
Die is kompliziert wenn du es für AVRs benötigst, aber um für den PC zu kompilieren reicht ein
gcc quellcode.c -o AusfuehrbareDatei.exe

Die setzt für M$ Win aber vorraus, dass gcc eingerichtet ist und nicht avr-gcc!

Ich würde dir für dein Win eine IDE empfehlen z.B http://www.bloodshed.net/devcpp.html


//edit: Zu langsam... Vorredner war schneller...

Earnie
30.08.2009, 15:09
Ich guck mir dieses Dev-C++ mal angucken.

Danke euch!

Edit: Hab's auf Anhieb hinbekommen, tolles Programm! Gleicher Quellcode, keine Fehlermeldungen mehr.