1

UNIX で C コードを作成して、テキストの各行から 3 番目の単語を読み取り、POPEN を使用して文字列に格納しようとしています。ただし、私のコードでは、while ループ内の行でエラー (代入演算子には変更可能な左辺値が必要) が表示されます。これが私のコードです:

    int main() {

int license = 0;
char number[100];


FILE *file = popen("grep User results_today.TXT_05012013 > filename", "r");
if ( file != NULL)
{
    char line [128];
    while (fgets(line, sizeof line, file) != NULL)
    {

        number = popen("cut -f3 -d' '", "r");

    }
    fclose (file);

    printf("Hello %s\n", number);
}

私はまだCに慣れていないので、ここにいくつかのエラーがあることを知っています。しかし、それらを修正するのを手伝ってください、ありがとう!

4

3 に答える 3

2
FILE *file = popen("grep User results_today.TXT_05012013 > filename", "r");

grepこれにより、コマンドが実行Userされ、出力がファイルにリダイレクトされますfilename。このコマンドの出力を読み取ることができるa が返さFILE *れますが、その出力はリダイレクトされているため、何も得られません。

popen("cut -f3 -d' '", "r");

これは、ファイル引数がないため、stdin から読み取って stdout に書き込むコマンドを実行します。このコマンドは、popen の戻り値cutによって読み取ることができFILE *ますが、何もしていません。

おそらく、次のようなものが必要です。

char line[128];
int number;
FILE *file = popen("grep User results_today.TXT_05012013 | cut -f3 -d' '", "r");
if (file) {
    while (fgets(line, sizeof line, file)) {
        if (sscanf(line, "%d", &number) == 1) {
            printf("It's a number: %d\n", number);
        }
    }
    pclose(file);
}
于 2013-05-09T02:35:48.563 に答える
1

popen の結果を固定サイズの char 配列に代入します。これは不可能です。

number = popen("cut -f3 -d' '", "r");

最初の popen のようにします -> FILE *file2 に割り当てます

于 2013-05-08T23:53:55.577 に答える