有五列字符串,中间都隔有不定量的空格,如何输出第二列的字符串,用fgets,popen和strstr函数
1条回答 默认 最新
关注
#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函数关闭文件指针,结束程序。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用