как использовать-вывод функции обратного вызова для другой системной команды в C - PullRequest
0 голосов
/ 06 августа 2020

Я хочу использовать вывод функции обратного вызова для другой системной команды. но не работаю над этим, может кто-нибудь помочь? ----

#include <stdio.h>
#include <stdlib.h> 
    
int fastLine(const char *filename);

int main() {
    char* ip_file = "f1";  
    fastLine(ip_file); // to print callback   
 
    // want to use it on system command,, but not working
    system("ping fastLine(ip_file)");
        
    return 0;
}

////// 1st line of file callback function ////////
int fastLine(const char *filename) {
    char line[1000];
    FILE *fptr;
    if ((fptr = fopen(filename, "r")) == NULL) {
        printf("Error! opening file");
        // Program exits if file pointer returns NULL.
        exit(1);
    }
    // reads text until newline is encountered
    fscanf(fptr, "%[^\n]", line);
    printf("%s\n", line);   
    fclose(fptr);
    return 0;
}

1 Ответ

0 голосов
/ 06 августа 2020

Вам нужно объединить строку, прочитанную из файла, с командой ping, используя строковые функции. Я использовал sprintf() ниже.

Вместо использования локальной переменной line в fastLine(), вы можете сделать это параметром, чтобы вызывающий мог предоставить строку для заполнения, а затем использовать что в результате.

#include <stdio.h>
#include <stdlib.h> 
    
int fastLine(const char *filename, char *line);

int main() {
    char* ip_file = "f1";  
    char hostname[64];
    fastLine(ip_file, hostname); // to print callback   
    char command[100];
    sprintf(command, "ping %s", hostname);
    system(command);
        
    return 0;
}

////// 1st line of file callback function ////////
int fastLine(const char *filename, char *line) {
    FILE *fptr;
    if ((fptr = fopen(filename, "r")) == NULL) {
        printf("Error! opening file");
        // Program exits if file pointer returns NULL.
        exit(1);
    }
    // reads text until newline is encountered
    fscanf(fptr, "%[^\n]", line);
    printf("%s\n", line);   
    fclose(fptr);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...