ah jetzt hauts hin, vielen dank!
Beiträge von Erdös-Index 97
-
-
Ich versuche mir gerade C beizubringen und scheitere schon ganz am anfang. beim lesen von files produziert fgets nur ein segfault, der folgende code soll das erste zeichen der ersten zeile von "test.txt lesen":
C
Alles anzeigen/* fgetstest.c */ #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int /*@unused@*/argc, char **argv) { FILE *fp; char *line; if ((fp = fopen ("test.txt", "r" )) == NULL ){ fprintf (stderr, "%s: could not open file\n", argv[0]); exit (EXIT_FAILURE); } printf("reading first character of the first line from file:\n"); if (fgets (line, 1, fp) != NULL) printf("%s",line); else printf("%s: could not read file\n", argv[0]); return 0; }
test.txt:
-Wall gibt keine Fehler, splint mein nur dass line nicht initialisiert ist, line=""; macht aber auch keinen Unterschied.
Bin leider kein Experte beim Debuggen, das habe ich soweit mit gdb probiert:
Code
Alles anzeigen(gdb) break main Breakpoint 1 at 0x80484c8: file fgetstest.c, line 12. (gdb) run Starting program: /home/eugen/sysprog/fgetstest Breakpoint 1, main (argc=1, argv=0xbfcb1984) at fgetstest.c:12 12 if ((fp = fopen ("test.txt", "r" )) == NULL ){ (gdb) step 17 printf("reading first character of the first line from file:\n"); (gdb) print fp $1 = (FILE *) 0x804a008 (gdb) step reading first character of the first line from file: 18 if (fgets (line, 1, fp) != NULL) (gdb) print fp $2 = (FILE *) 0x804a008 (gdb) print line $3 = 0x80485a9 "\215�\030���\215\203\030���)���\002\205�t$1�\213E\020\211D$\b\213E\f\211D$\004\213E\b\211\004$�\224�\030���\203�\0019�u�\203�\f[^_]�\213\034$�\220\220U\211�S\203�\004��\226\004\b\203��t\0221���\213\203�\226\004\b\203�\004\203��u�\203�\004[]�\220\220\220U\211�S\203�\004�" (gdb) step Program received signal SIGSEGV, Segmentation fault. 0xb7debc42 in fgets () from /lib/tls/i686/cmov/libc.so.6
Wäre sehr dankbar wenn mir jemand helfen könnte.
-
Ah jetzt funktionierts! herzlichen dank :thumb:
-
danke für die antwort ersteinmal
Zitat von Paulchenaus meiner abgabe für das 5. beispiel in security (machst du das auch, oder? )
Erraten :).
Zitat von PaulchenKannst du mir erklären wie du zu der Zeile kommst? Bei mir kann der Compiler nichts mit "Main" anfangen - "Main can not be resolved to a type" :confused:
danke
-
Hallo Leute,
Ich habe ein Problem damit, eine Datei zu lesen, die sich gemeinsam mit dem .class file in einem jar-Archiv befindet. Das Programm liest an einer Stelle einfach die erste Zeile der Datei "key.txt" ein:
Codepublic static String readKey() throws IOException { File f = new File("key.txt"); BufferedReader fr = new BufferedReader(new FileReader(f)); return fr.readLine(); }
Wenn ich nun sowohl die .class Datei als auch key.txt in ein jar-File packe, liest das Programm nicht die key.txt im Archiv, sondern sucht im Ordner, in dem sich das Archiv befindet, nach key.txt. Wird diese nicht gefunden, bekomme ich eine (klarerweise) eine IOException, obwohl die benötigte Datei an sich im jar-Archiv enthalten ist.Kann mir jemand erklären, wie ich dem Programm klar mache, dass es auch das Archiv nach key.txt durchsuchen soll? (evtl. eine bestimmte Zeile im Manifest?) Aus den guides auf java.sun.com/docs bin ich irgendwie nicht schlau geworden.
mfg Erdös
-
Habs gefunden und hat geholfen
danke nocheinmal :thumb: -
danke für die antworten.
in welchem ordner findet sich diese boot.ini?
eine suche auf der betreffenden partition hat nix ergeben :(. -
Hallo, mein problem ist folgendes:
Ich habe mit Partition magic eine Neuinstallation von winxp zunichte gemacht und wollte also auf der selben Partition nocheinmal drüber installieren.
Böderweise war ich zu faul, die partition zu formatieren (bzw bei der xp-installation fand ich keine möglichkeit dazu) und nun bekomme ich beim booten die auswahl zwischen 2x winxp (auf derselben partition), wovon das eine nicht mehr funktioniert. Alle Datein der defekten Installation (win-verzeichnis etc) hab ich von der partition gelöscht, aber der bootmanager stellt mich trotzdem immer noch vor die wahl :mad:.Gibts eine möglichkeit, den windows-bootmanger zu umgehen oder eine datei zu verändern, sodass automatisch die aktuelle win-variante gebootet wird?
würde mich freuen wenn mir jemand hierbei helfen könnte :).