中间都隔有不定量的空格,如何输出第二列的字符串,用fgets,popen和strstr函数

有五列字符串,中间都隔有不定量的空格,如何输出第二列的字符串,用fgets,popen和strstr函数

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LEN 1024

int main() {
    FILE *fp;
    char buf[MAX_LEN];
    char *token;
    
    fp = popen("command", "r"); //替换"command"为你要执行的命令,例如"ls -l"
    if (fp == NULL) {
        printf("Error: Failed to execute command\n");
        return 1;
    }

    while (fgets(buf, MAX_LEN, fp) != NULL) {
        token = strtok(buf, " "); //使用空格作为分隔符
        if (token != NULL) {
            token = strtok(NULL, " "); //取出第二列
            if (token != NULL) {
                printf("%s\n", token);
            }
        }
    }

    pclose(fp);
    return 0;
}

解释一下代码:

  1. 首先,使用popen函数执行一个命令,并返回一个文件指针,该文件指针指向执行命令的标准输出流。例如,你可以替换"command"为"ls -l",这样就可以执行ls -l命令并返回结果。

  2. 接着,在循环中使用fgets函数读取fp指向的文件流中的一行文本,存储在buf中。

  3. 使用strtok函数对buf进行分割,使用空格作为分隔符。第一次调用strtok会返回第一个被分割出来的字符串,即第一列字符串;第二次调用strtok会返回第二个被分割出来的字符串,即第二列字符串。

  4. 如果第二列字符串不为空,则使用printf函数输出它。

  5. 最后,使用pclose函数关闭文件指针,结束程序。