Segmentation foult nur beim Debuggen ???
- 
					
					
					
					
 @DirkB sagte in Segmentation foult nur beim Debuggen ???: @WienMax sagte in Segmentation foult nur beim Debuggen ???: Beim debuggen schlägt er aber in Zeile 65 an: 
 while (buftext[ibuf] != ' ')Welchen Wert hat denn ibuf an der Stelle? 
 Und ist der kleiner als size?Das wäre komisch. Bist du ganz sicher? 
 
- 
					
					
					
					
 @hustbaer oben ist ein link zum Screenshot. 
 
- 
					
					
					
					
 OK. Also entweder stimmen die Werte die VS Code da anzeigt nicht, oder du hast dir den Stack zerschossen. Ich meine, guck mal was da für textundbuftextangezeigt wird.
 
- 
					
					
					
					
 @Th69 sagte in Segmentation foult nur beim Debuggen ???: PS: malloc(size+1 * sizeof(char)) kannst du zu malloc(size+1)verkürzen (da sizeof(char) immer 1 ist). Wenn das für einen Typ gemacht wird, bei dem sizeof() > 1 ergibt, kommt auch Müll raus, da Punkt vor Strichrechnung gilt. 
 
- 
					
					
					
					
 @WienMax sagte in Segmentation foult nur beim Debuggen ???: FILE *file; ... printf("Konnte Datei %s nicht öffnen", file); // Gehört noch ausgebessert da file bei Fehler null ist!Der Formatspecifier %s ist nicht für eine FILE-Struktur da. Schalte den Warnlevel vom Compiler auf Maximum und beseitige dann alle Warnungen. Ein cast ist dabei nicht das Mittel der Wahl. @WienMax sagte in Segmentation foult nur beim Debuggen ???: while (buftext[ibuf] != '>') nodenameende[i++] = buftext[ibuf++]; // Nodename EndeBei solchen Aktionen sollte das i auch mal überprüft werden, damit es nicht zu groß wird- und wenn es zu groß wird muss es auch behandelt werden. 
 
- 
					
					
					
					
 @Th69 sagte in Segmentation foult nur beim Debuggen ???: int len = fread(buftext,size,1,file); Damit habe ich dann in len den Wert 0 was aber nicht gewollt ist. 
 fread returns the number of full items actually read, which may be less than count
 
- 
					
					
					
					
 OK, sollte dann int len = fread(buftext,1,size,file); // size und 1 vertauscht buftext[len] = '\0';sein. PS: Statt der 1könnte man auchsizeof(char)schreiben. 
 
- 
					
					
					
					
 @Th69 sagte in Segmentation foult nur beim Debuggen ???: OK, sollte dann int len = fread(buftext,1,size,file); // size und 1 vertauscht buftext[len] = '\0';sein. PS: Statt der 1könnte man auchsizeof(char)schreiben. Danke jetzt läuft das Programm so wie es soll und nicht über das Ende hinaus. 
 Tatsächlich ist ein Unterschied bei size: 24794 und len: 24417
 
- 
					
					
					
					
 Dies wird an den Zeilenumbrüchen liegen. Im Textmodus (unter Windows) wird \r\nals\ngelesen (und damit istlen < size).
 Wenn du die Originalzeilenumbrüche erhalten willst, dann lese binär:"rb"(hier aber nicht zu empfehlen)
 
- 
					
					
					
					
 @Th69 ja liegt eindeutig an den Zeilenumbrüchen. 
 
 
			
			
		