2016-04-10 40 views
-1

タイトルによれば、文字列配列の要素を構造体配列に追加することは可能でしょうか?たとえば、私は次のコードを持っています:配列から構造体配列への要素の追加

#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; 
} 

これは私のusers.txtファイルの行を文字列配列に追加することです。私が今したいことは、このような例のために、私の構造体配列にこの文字列配列の要素を追加することです:

NEWUSER文字列配列

NEWUSERの[1] .fullName =最初の要素[ 1] .DESCRIPTION =文字列配列

...

など

の2番目の要素は、これは可能でしょうか?または、文字列配列を使用せずに上記の形式で私の構造体配列にファイルから行を追加する方法はありますか?

ご協力いただきましてありがとうございます。

+0

コードをインデントします。 – gsamaras

+0

私は、 'プログラム'がどこから来たのか不思議ではないことを知っています。そして、私は '#include 'も同様にうまくいくと確信しています。どうぞ、お願いします*、*実際のコードを投稿してください。 – WhozCraig

+0

あなたは@WhozCraigではありません。私も好奇心が強いですし、なぜコードをインデントしなければならないのか、難しくないでしょう。 – gsamaras

答えて

0

行を読み終えたら、sscanf関数を使用して構造体配列のi番目の要素を埋めることができます。文字列配列をもっと使う必要はありません。 sscanfで文字列形式を指定し、i番目の新規ユーザーのすべてのフィールドにループを埋め込むことができます。