1

XML ドキュメントから読み取り、アクションの実行中に参照として使用する Python プログラムを作成するつもりでした。しかし、XML 文書を手動で作成するのは面倒なので、最初の行とルート要素を除く大部分を C プログラムで作成することにしました。コードは次のとおりです。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
    FILE * fp = fopen("/Users/rajshrimali/Desktop/SPC_CMS.txt", "r");
    FILE * fw = fopen("/Users/rajshrimali/Desktop/SPC_XML", "a");
    char *line = NULL;
    size_t linecap = 0;
    ssize_t linelen;
    while ((linelen = getline(&line, &linecap, fp)) > 0){
        char *token;
        int x = 1; 
        while((token = strsep(&line, ",")) != NULL){
            printf("%s", token);
            if(x == 1){
                fwrite("<item> \n", linelen, 1, fw);
                fwrite("<name> \n", linelen, 1, fw);
                fwrite(token, linelen, 1, fw);
                fwrite("\n </name> \n", linelen, 1, fw);
                x++; 
            }
            if(x == 2) {
                fwrite("<SPC> \n", linelen, 1, fw);
                fwrite(token, linelen, 1, fw);
                fwrite("\n </SPC> \n", linelen, 1, fw);
                fwrite("</item> \n", linelen, 1, fw);
            }
        }
    }
}

コードはエラーなしでコンパイルされました。ただし、実行すると、ファイル SPC_XML はほとんど正しくありませんでした。

<item> 
�&lt;na<name> 

 <Agate�0.80

 </name> 
�&lt;SPC> 

 </Agate�0.80

 </SPC> 
<</item> 
,�&lt;item> 
<na<name> 

このナンセンスはしばらく続きました。入力ファイル にはfp、次の形式のデータが含まれていました。

Agate,0.80
Aluminum bronze,0.436
Aluminum,0.87
Antimony,0.21
Apatite,0.84

エラーはfwriteにあると思いますが、それが何であるかはわかりません。何が問題ですか?

4

2 に答える 2

2

ifここでのステ​​ートメントには明らかなエラーがいくつかあります。たとえば、等号=を使用する必要があるときに代入を使用しています。==

 if(x = 1)

次のようにする必要があります。

if(x == 1)

警告をオンにすることをお勧めし-Wall -W -pedanticます。gcc を使用すると、次のように表示されます。

warning: suggest parentheses around assignment used as truth value [-Wparentheses]
         if(x = 1){
于 2013-04-14T01:37:04.750 に答える