2017-09-18 2 views
0

Ich habe ein grundlegendes Problem bezüglich des Formats einer Lösung (2D-Array) mit fprintf für die Speicherung in einer Ausgabedatei.C-Sprache - Lösung in Ausgabedatei speichern - Leerzeichen vor der nächsten Zeile verhindern

Hier ist der Teil meines Codes, die fprintf dieses "x0" 2D-Array (von Dimensionen size_tot_x für Reihen und size_tot_y für Spalten):

for (i=0;i<size_tot_x;i++) { 
     for (j=0;j<size_tot_y;j++) 
     fprintf(file,"%15.11f ",x0[i][j]); 
     fprintf(file,"\n"); 
    } 

und der Inhalt der Datei:

10.00000000000 10.00000000000 10.00000000000 10.00000000000 10.00000000000 10.00000000000 10.00000000000 10.00000000000 
10.00000000000 9.94633107782 9.90329194436 9.87940702757 9.87940702757 9.90329194436 9.94633107782 10.00000000000 
10.00000000000 9.89913542001 9.81824830799 9.77335934800 9.77335934800 9.81824830799 9.89913542001 10.00000000000 
10.00000000000 9.86410551943 9.75512660855 9.69464787655 9.69464787655 9.75512660855 9.86410551943 10.00000000000 
10.00000000000 9.84546649879 9.72154025406 9.65276637770 9.65276637770 9.72154025406 9.84546649879 10.00000000000 
10.00000000000 9.84546649879 9.72154025406 9.65276637770 9.65276637770 9.72154025406 9.84546649879 10.00000000000 
10.00000000000 9.86410551943 9.75512660855 9.69464787655 9.69464787655 9.75512660855 9.86410551943 10.00000000000 
10.00000000000 9.89913542001 9.81824830799 9.77335934800 9.77335934800 9.81824830799 9.89913542001 10.00000000000 
10.00000000000 9.94633107782 9.90329194436 9.87940702757 9.87940702757 9.90329194436 9.94633107782 10.00000000000 
10.00000000000 10.00000000000 10.00000000000 10.00000000000 10.00000000000 10.00000000000 10.00000000000 10.00000000000 

Mein Problem ist, dass ich ein einzelnes Leerzeichen am Ende jeder Zeile vor der nächsten Zeile habe. Es wird nicht wirklich mit den obigen Daten der Lösung gezeigt, aber dieser Platz erscheint, wenn diese Datei bearbeitet wird. Ich denke, das Problem kommt von der fprintf(file,"\n");: In der Tat scheint es, ein einzelnes Leerzeichen vor der nächsten Zeile hinzuzufügen.

Wie verhindert man diesen einzelnen Platz an jedem Ende der Zeile?

Grüße

+0

eine Art und Weise: 'for (j = 0; j BLUEPIXY

+0

du meinst sicher' fputc'. Wie auch immer, das ist eine einfache Lösung, vielen Dank! – youpilat13

+0

Ah, ja, mein Schlechter. 'putchar ('')' -> 'fputc ('', Datei)' – BLUEPIXY

Antwort

1

Es gibt grob zwei Arten Begrenzungszeichen in der Folge von Daten zu setzen.

  1. Geben Sie kein Trennzeichen für das erste Element aus. Die folgenden Elemente geben Begrenzer aus, bevor Elemente ausgegeben werden.

    //Pseudocode 
    for(int rows_index = 0; rows_index < rows_size; ++rows_index){ 
        for(int columns_index = 0; columns_index < columns_size; ++columns_index){ 
         if(columns_index != 0)//not first element 
          print_c(delimiter); 
         print_e(elements[rows_index][columns_index]); 
        } 
        print_c(newline);//output record separator 
    } 
    
  2. Ausgabe des Trennzeichens nach Ausgabe des Elements mit Ausnahme des letzten Elements.

    for(int rows_index = 0; rows_index < rows_size; ++rows_index){ 
        for(int columns_index = 0; columns_index < columns_size; ++columns_index){ 
         print_e(elements[rows_index][columns_index]); 
         if(columns_index != columns_size - 1)//not last element 
          print_c(delimiter); 
        } 
        print_c(newline);//output record separator 
    } 
    
Verwandte Themen