用c写一段代码 调用该指令usr/bin/sn_core.elf getstat 2>/dev/null 此指令输出的是Status:WR mode : WRC_SLAVE_WR1 wr0 -> lnk:0 rx:0 tx:14494 lock:1 wr1 -> lnk:1 rx:20301 tx:5779 lock:1 syncs:wr1 sv:1 ss:'TRACK_PHASE' aux:0 sec:5892 nsec:118726784 mu:867139 dms:422756 dtxm:238106 drxm:197332 dtxs:241345 drxs:178945 asym:21627 crtt:11411 cko:-1 setp:13000 hd:57891 md:31729 ad:65000 ucnt:5407 temp: 48.687 C Time: Thu, Jan 1, 1970, 01:38:13 +43337456 nanoseconds. 将输出内容直接储存到一个数组中 不要每行存储
时间: 2023-08-10 20:06:18 浏览: 121
以下是调用该指令并将输出内容直接存储到数组中的 C 代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFFER_SIZE 1024
int main() {
char buffer[BUFFER_SIZE];
char result[BUFFER_SIZE];
int index = 0;
// 执行指令
FILE* fp = popen("/usr/bin/sn_core.elf getstat 2>/dev/null", "r");
if (fp == NULL) {
printf("Error: failed to execute command.\n");
exit(1);
}
// 读取指令输出并存储到数组中
while (fgets(buffer, BUFFER_SIZE, fp) != NULL) {
// 去除行末换行符
buffer[strcspn(buffer, "\n")] = 0;
// 将该行内容添加到结果数组中
strcpy(result + index, buffer);
index += strlen(buffer);
}
// 关闭文件指针
pclose(fp);
// 输出存储的内容
printf("Result:\n%s\n", result);
return 0;
}
```
在上述代码中,我们同样使用 `popen()` 调用该指令,并通过 `fgets()` 读取其输出内容。但是,我们将每行的内容存储到一个缓冲区中,然后将该缓冲区的内容直接添加到 `result` 数组中。为了去除每行末尾的换行符,我们使用 `strcspn()` 函数找到该行的换行符位置,并将其替换为字符串结束符 `\0`。最后,我们输出存储的内容。同样需要注意的是,上述代码仅供参考,具体实现可能需要根据实际情况进行调整。
阅读全文