进程(起个开头,复习的一天)day26
二:进程
一:字符串分割strtok
char *strtok(char *str, const char *delim)
参数
str
: 要分割的字符串。在第一次调用时,传入要分割的字符串;后续调用时,传入NULL
,表示继续分割同一个字符串。delim
: 分隔符字符串。strtok()
会根据这个字符串中的任意一个字符来分割str
。
返回值: 返回指向下一个标记的指针。如果没有更多的标记,则返回 NULL。
char buf[128]="zhangsan:16:180:东航中心";char* args[4]={NULL};args[0]=strtok(buf,":"); // name args[1]=strtok(NULL,":"); // age NULL 是接着上次分割符+1的位置,开始 分离字符串,也是把:置成\0,识别NULLargs[2]=strtok(NULL,":");args[3]=strtok(NULL,":");printf("%s_%s_%s_%s\n",args[0],args[1],args[2],args[3]);
一:用strtok
显示想要的进程数据
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main(int argc, char** argv)
{FILE* fp = fopen("/proc/800/status", "r");if (NULL == fp){printf("fopen error\n");return 1;}char data[3][128] = {0};for (int i = 0; i < 6; i++){char buf[128] = {0};fgets(buf, sizeof(buf), fp);if (0 == i){strcpy(data[0], buf);}else if (2 == i){strcpy(data[1], buf);}else if (5 == i){strcpy(data[2], buf);}}char *name=NULL;char* state=NULL;char* pid = NULL;strtok(data[0],"\t");name = strtok(NULL,"\n");strtok(data[1],"\t");state = strtok(NULL,"\n");strtok(data[2],"\t");pid = strtok(NULL,"\n");char result[128]={0};sprintf(result,"%s:%s:%s\n",name,state,pid);fputs(result,stdout);fclose(fp);// system("pause");return 0;
}
二:实现字典查找(用链表和文件)
#include "linklist.h"
#include <stddef.h>
#include <stdio.h>
#include <string.h>int main(int argc, char **argv) {FILE *fp = fopen("/home/linux/dict.txt", "r");if (fp == NULL) {printf("fopen error\n");return 1;}LinkList *ll = CreateLinkList();char buf[1000];DATATYPE data;while (fgets(buf, sizeof(buf), fp)) {// 清除行末换行符buf[strcspn(buf, "\n")] = '\0';char *word = strtok(buf, " ");char *mean = strtok(NULL, "\n");if (word == NULL || mean == NULL) {continue;}// 拷贝到结构体中strncpy(data.word, word, sizeof(data.word) - 1);data.word[sizeof(data.word) - 1] = '\0';strncpy(data.mean, mean, sizeof(data.mean) - 1);data.mean[sizeof(data.mean) - 1] = '\0';InsertTailLinkList(ll, &data);}fclose(fp);
//ShowLinkList(ll);
#if 1char want_word[20] = {0};scanf("%s", want_word);DATATYPE *result = FindInLinkList(ll, want_word);if (result != NULL) {printf("查找到:%s\t%s\n", result->word, result->mean);} else {printf("未找到该单词。\n");}#endifDestroyLinkList(&ll);// system("pause");return 0;
}