2016-05-10 9 views
-1

Ich benutze C und versuche, Text aus der Datei zu lesen und in Array für die spätere Verwendung zu speichern, aber es scheint nicht zu funktionieren. Es gibt auch keinen Fehler. Was ist falsch?C Lesen Sie Text aus der Datei und setzen Sie ihn in Array

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

int main(void) 
{ 
    FILE *fp; 
    fp = fopen("data.txt", "r"); 
    char rida[120], str[100]; 
    int i = 0, j = 0; 

    while (fscanf(fp, "%s", str[i]) != EOF) 
    { 
     rida[i] = str[i]; 
    } 
    fclose(fp); 
} 

data.txt Datei enthält folgende Komponenten:

Text 
Text2 
Text3 
Text4 
Text5 
+1

'str [i]', wirklich? Was hat dein Compiler dir gesagt? –

+0

Sie erhalten einzelne Zeichen und Zeichenfolgen (Zeichenfelder) ein wenig durcheinander. – lurker

+0

Was soll ich tun? – Miner123

Antwort

1

ändern rida[120] zu so etwas wie rida[20][120], weil es scheint, dass Sie auf eigene jedes Wort gespeichert werden sollen, so müssen Sie zweidimensionale array.Also Verwendung strcpy() Strings zu kopieren, und nicht den Zuweisungsoperator =:

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

int main(void) 
{ 
    FILE *fp; 
    fp = fopen("data.txt", "r"); 
    char rida[20][120], str[100]; 
    int i = 0, j = 0; 

    while (fscanf(fp, "%s", str) != EOF) 
    { 
     strcpy(rida[i], str); 
     i++; 
    } 
    size_t n; 
    for (n = 0; n < 5; n++) { 
     printf("%s\n", rida[n]); 
    } 
    fclose(fp); 
} 
+0

vielleicht die letzte für die Schleife, die Sie eingegeben haben, ist für Testzwecke, denke ich. trotzdem richtige Antwort +1 :) – Cherubim

0

Hier haben Sie die Antwort comm mit und Zeilenargumente:

int main(int argc,char *argv[]) 
    { 
     FILE *fp; 
     if(argc<2) return printf("Error.Not enough arguments.\n"),1; 
     if((fp = fopen(argv[1],"r"))==NULL) return printf("Error. Couldn't open the file.\n"),1; 
     char str[10][100]={""}; //Making sure to have only the scaned strings in the array 
     int i=0; 
     while (fscanf(fp,"%s",str[i++]) != EOF); 

     int j=0; 
     while(j<i){ 
     printf("%s\n",str[j++]); 
     } 

     fclose(fp); 
     return 0; 
    } 
Verwandte Themen