二:进程
一:字符串分割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,识别NULL
args[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 1
char 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");
}
#endif
DestroyLinkList(&ll);
// system("pause");
return 0;
}
374

被折叠的 条评论
为什么被折叠?



