2017-04-11 2 views
0

Ich habe eine lange Array position und sie als eine einzelne Spalte in schreiben kann ich folgendes:C: Schreiben in die Datei als mehrere Spalten

FILE *f = fopen("testing.txt", "w"); 
for (i=0; i<18; i++){ 
    fprintf(f,"%d\n",position[i]); 
} 

Der Ausgang (in testing.txt) wie:

1 
3 
3 
5 
6 
7 
0 
37 
8 
34 
5 
3 
5 
6 
3 
1 
7 
8 

wie kann ich drucken, wie in Datei:

1 7 5 1 
3 0 3 7 
3 37 5 8 
5 8 6 
6 34 3 

als mehrere Spalten jeweils 5 maximale Länge?

+1

Woher wissen Sie, wie viele Elemente Sie für jede Ausgabezeile benötigen? –

+0

@ John3136 aber wie kann ich in die zweite Spalte Zeile eins nach Spalte eine Zeile 5 gehen? – kyle

+0

@ John3136 aber dann muss ich es als eine Matrix speichern oder das Array 'Position' vorher schreiben und' \ t' verwenden. Ist das die einzige Lösung? – kyle

Antwort

2

wie diese

#include <stdio.h> 

int main(void){ 
    int pos[] = { 
     1,3,3,5,6, 
     7,0,37,8,34, 
     5,3,5,6,3, 
     1,7,8 
    }; 
    int len = sizeof(pos)/sizeof(*pos); 
    int col_len = 5; 
    for(int i = 0; i < col_len; ++i){ 
     for(int j = i; j < len; j += col_len){ 
      printf("%2d ", pos[j]);//fprintf(f, "%2d ", pos[j]) 
     } 
     puts(""); 
    } 
} 
+0

[DEMO] (http://ideone.com/XeBvFq) – BLUEPIXY

+0

Nur zwicken wäre 'putchar ('\ n');' (um das zu machen ''n' 'explizit). Freut mich zu sehen, dass du eins antwortest. –

+0

[DEMO2] (http://ideone.com/IZXbVF) – BLUEPIXY

0

Ihre Ausgabe ist ein wenig seltsam, Sie 4 Elemente in der ersten und zweiten Zeile haben, und drei Elemente in dritten und vierten Linie. Im Allgemeinen in der gleichen Linie zu halten, können Sie drucken „“ oder ‚\ t‘ - Registerkarte

printf("%d ", 1); 
printf("%d", 2); 

oder

printf("%d\t", 1); 
printf("%d", 2); 

Wenn Sie eine neue Zeile, die Sie ‚\ n‘ verwenden vornehmen müssen (wie Sie verwenden) Sie müssen wissen, wie viele Elemente, die Sie in jeder einzelnen Linie müssen zwingen, dann ‚\ n‘

0

Originalcode

FILE *f = fopen("testing.txt", "w"); 
for (i=0; i<18; i++){ 
    fprintf(f,"%d\n",position[i]); 
} 

Meine Vermutung für Ihre Anfrage, wenn ich es richtig verstanden habe, würde so aussehen:

#include <stdio.h> 
#include <stdlib.h> 

int main(){ 

int v[18] = {1,3,3,5,6,7,0,37,8,34,5,3,5,6,3,1,7,8}; 

int i = 0, adder = 0, done = 0; 

while (1){ 
    if (done == 19) 
     break; 
    done++; 
    if (i <= 18){ 
     printf("%d ", v[i]); 
     i = i+5; 
    } 
    if (i > 18){ 
     printf("\n"); 
     adder++; 
     i = adder; 
    } 
    } 
} 

Sie die Datei selbst hinzufügen können. Wenn Sie eine Erklärung wollen, im Grunde genommen habe ich daran gedacht, dass wir nur Ihre 18 Elemente haben, und obwohl ich nicht mit allen fertig war, zählte ich jedes Mal, wenn ich einen von ihnen druckte, und als ich sie druckte, achtete ich darauf Drucke von 5 bis 5, so dass es in einer Matrixform wäre.

Verwandte Themen