gpt4 book ai didi

c - 如何获取C中分隔字符串的位置

转载 作者:行者123 更新时间:2023-11-30 15:44:48 25 4
gpt4 key购买 nike

如何获取分隔字符串的位置?

我的文本文件看起来像

at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash

avahi:x:109:111:User for Avahi:/var/run/avahi-daemon:/bin/false

beagleindex:x:110:112:User for Beagle indexing:/var/cache/beagle:/bin/bash

我的 C 代码看起来像

#include<stdio.h>


int main(int argc, char *argv[])
{
char *str, *saveptr;
char ch[100];
char *sp;
FILE *f;
int j;
char searchString[20];
char *pos;
f = fopen("passwd", "r");
if (f == NULL)
{
printf("Error while opening the file");
}
while (fgets(ch, sizeof ch, f)!= NULL)
{
/*printf("%s\n", ch); */

for (j = 1, str = ch; ; j++, str= NULL)
{
char *token = strtok_r(str, ": ", &saveptr);
if (token == NULL)
break;
//printf("%s---\n---", token);
printf("%s",token);

}


}


fclose(f);

最佳答案

好吧,使用 strtok(str, ": ", 会在空格和冒号上分割字符串,这可能不是您想要的。此外,strtok 将多个连续的分隔符视为单个分隔符(因此它永远不会在两个冒号之间返回空字符串),这不是您解析 passwd 所需的。

相反,您可能只想使用 strchr:

while (fgets(ch, sizeof ch, f)!= NULL) {
char *token, *end;
for (j = 1, token = ch; token; j++, token = end) {
if ((end = strchr(token, ':'))) *end++ = 0;
...do something with token and j

关于c - 如何获取C中分隔字符串的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19331525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com