2016-04-10 22 views
-1

Başlığın belirttiği gibi, bir dize dizisinden bir yapı dizisine öğe eklemek mümkün olabilir mi? Bir diziden bir dizi için bir yapı dizisine eleman ekleme

#include<string.h> 
#include<stdio.h> 
#include<stdlib.h> 
#define MAX_SIZE 500 

typedef struct User 
{ 
    char fullName[MAX_SIZE]; 
    char description[MAX_SIZE]; 
    char userName[MAX_SIZE]; 
    char password[MAX_SIZE]; 
} userData[MAX_SIZE]; 

int main (void) 
{ 
    int j=0; 
    int numData=0; 
    char* data[500]; 
    char line[500]; 
    int i=0; 
    userData newUser; 
    FILE *file; 
    file = fopen("users.txt", "r"); 
    while(fgets(line, sizeof(line), file)) 
    { 
     data[i]=strdup(line); 
     i++; 
     numData++; 
    } 
    for (j=0 ; j<numData+1; j++) { 
     printf("%s", data[j]); 
    } 

    fclose(file); 

    return 0; 
} 

Şu anda bu kodu ne bir dize diziye benim users.txt dosyasından satırları eklemektir: Örneğin, benim şu kodu var. dize dizisi

NEWUSER [ait

NEWUSER [1] .fullName = ilk öğe: Şimdi ne yapmam istiyorum böyle örneğin, benim yapı dizisine bu dize diziden elemanları eklemektir 1] .description = dize dizisi

ikinci unsur ...

bu mümkün olabilir mi vs? Ya da dize dizisini kullanmadan yukarıda anlattığım formatta dosyadan satırları yapı dizilimime eklemenin bir yolu var mı?

Herhangi bir yardım için teşekkür ederiz!

+0

Kodunuzu girin. – gsamaras

+0

Biliyorum, 'programların nereden geldiğini merak eden tek kişi ben değilim. Ve eminim ki #include 'da kusmak için gidiyor. Lütfen, lütfen *, mesaj * gerçek * kodu. – WhozCraig

+0

Hayır, @WhozCraig değilsiniz. Ben de merak ediyorum ve neden onun kodunu girmeliydin diye, o kadar da zor olmaz. – gsamaras

cevap

0

Satırı okuduktan sonra, sscanf işlevini kullanarak yapı dizininin i'nci öğesini doldurun. Dize dizisini daha fazla kullanmanıza gerek yoktur. Dize formatınızı sscanf olarak belirleyebilir ve i.th yeni kullanıcının tüm alanlarını döngü içinde doldurabilirsiniz.