有五列字符串,中间都隔有不定量的空格,如何输出第二列的字符串,用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;
}
解释一下代码:
首先,使用popen函数执行一个命令,并返回一个文件指针,该文件指针指向执行命令的标准输出流。例如,你可以替换"command"为"ls -l",这样就可以执行ls -l命令并返回结果。
接着,在循环中使用fgets函数读取fp指向的文件流中的一行文本,存储在buf中。
使用strtok函数对buf进行分割,使用空格作为分隔符。第一次调用strtok会返回第一个被分割出来的字符串,即第一列字符串;第二次调用strtok会返回第二个被分割出来的字符串,即第二列字符串。
如果第二列字符串不为空,则使用printf函数输出它。
最后,使用pclose函数关闭文件指针,结束程序。