2017-12-06 14 views
-5

XMLのタグ内に1GBのデータを生成する人がわかりません。 1GBのサイズのデータ​​テキスト内に1行のデータを生成したい これを最も効率的(スピードワイズ)に実現する方法を教えてください。 データが読めるする必要があり、私は3つのファイルを作成することによって、それを解決し1GBのC言語でxmlファイルを生成する方法

#include <stdio.h> 

int main() { 

    printf(" --- Creating XML"); 

    FILE *fptr; 

    /* open for writing */ 
    fptr = fopen("/tmp/emp.xml", "w"); 

    if (fptr == NULL) 
    { 
      printf("File does not exists \n"); 
      return 1; 
    } 


    fprintf(fptr, "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"); 
    fprintf(fptr, "<customer id=\"100\">\n"); 
    fprintf(fptr, " <age>25</age>\n"); 
    fprintf(fptr, " <name>New Customer</name>\n"); 
    fprintf(fptr, " <data>dhgdhgdkrjgndliutghdnkljtghdliuthgdithugdnk...1GB_LONG<data>\n"); 
    fprintf(fptr, "</customer>"); 

    fclose(fptr); 
} 
+0

ちょうどループで百万回のカップルを "バー" を書くのか? – JJJ

+0

小さな塊を印刷するループについてはどうですか? –

+0

最初のタグまで追加してからランダムな文字を挿入することはできますか?最後にそれをタグの残りの部分で確定しますか?私は試してみますよ。 – Frazz

答えて

0

(もちろんナンセンスすることができます)。

データが存在するはずのタグが開かれるまでxmlで1つ。 生成された迷惑データの2番目のデータです。 バルクデータの終了タグと残りのXMLの3番目のタグ。そのよう

// Open two files to be merged 
    FILE *fp1 = fopen("person1.xml", "r"); 
    FILE *fp2 = fopen("randomdata.txt", "r"); 
    FILE *fp3 = fopen("person3.xml", "r"); 


    // Open file to store the result 
    FILE *fp4 = fopen("personf.xml", "w"); 
    char c; 

    if (fp1 == NULL || fp2 == NULL || fp3 == NULL || fp4 == NULL) 
    { 
     puts(" --- Could not open files"); 
     exit(0); 
    } 

    // Copy contents of first file1 
    while ((c = fgetc(fp1)) != EOF) 
     fputc(c, fp4); 

    printf(" --- Done copying file 1\n"); 
    // Copy contents of first file2 
    while ((c = fgetc(fp2)) != EOF) 
     fputc(c, fp4); 

    printf(" --- Done copying file 2\n"); 

    // Copy contents of first file3 
    while ((c = fgetc(fp3)) != EOF) 
     fputc(c, fp4); 

    printf(" --- Done copying file 3\n"); 

    printf("Merged files\n"); 

    fclose(fp1); 
    fclose(fp2); 
    fclose(fp3); 
    fclose(fp4); 
    return 0; 
関連する問題