Передача вывода системной команды в файл - PullRequest
0 голосов
/ 27 августа 2018

Я работаю над заданием, в котором мне необходимо выполнить системные команды и записать вывод в файл. На данный момент я могу передать вывод, используя >> output.txt во время выполнения, но как мне сделать это автоматически в моей программе, не заставляя пользователя печатать деталь трубопровода. Я попытался объединить его в самой функции system, одновременно пытаясь создать переменную temp, чтобы добавить ее в начале каждого цикла. Я не работал с C в течение многих лет, и поэтому это относительно простая задача, которую я нахожу трудной. Вот мой исходный код:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char *argv[]) { /*argc holds the number of arguements and argv is an array of string pointers with indifinate size  */

    /*Check to see if no more than 4 arg entered */
    if(argc > 4 && argc > 0) {
        printf("Invalid number of arguements. No greater than 4");
        return 0;
    }
    FILE *fp;
    int i;
    char* temp[128];

    for(i = 1; i < argc; i++) {
        //strcopy(temp, argv[i]);
    //  printf("%s", temp);
        system(argv[i] >> output.txt);

    }
    return 0;
}

Спасибо за помощь.

1 Ответ

0 голосов
/ 27 августа 2018

>> в этом контексте - не перенаправление оболочки, а оператор правого сдвига C.

Перенаправление должно быть частью команды, отправленной на system. Кроме того, temp должен быть массивом char, а не массивом char *:

char temp[128];
sprintf(temp, "%s >> output.txt", argv[1]);
system(temp);
...