使用strtok分隔字符串并存储在struct中

y

我想我应该改一下我的问题。我的结构如下:

struct profile {
    char name[30];
    int age, phoneNo;
};

我有一个带有如下字符串的文件:

James Brown,35y,0123456789
Mary Brown,45y,0123987456

目前,我已经使用该人的姓名/年龄/电话号码写了一个代码来搜索记录,我想将记录存储到我拥有的结构中。我正在尝试使用strtok逗号分隔数据,但是我的代码无法正常工作。

int main()
{
    char search[50];
    char record[50];
    const char s[2] = ",";
    char* token;
    struct profile c;

    FILE* fPtr;
    if (fPtr = fopen("profile.txt", "r"))
    {
        // flag to check whether record found or not
        int foundRecord = 0;
        printf("Enter name to search : ");
        // fgets gets name to search
        fgets(search, 50, stdin);
        //remove the '\n' at the end of string
        search[strcspn(search, "\n")] = 0;

        
        while (fgets(record, 50, fPtr))
        {
            // strstr returns start address of substring in case if present
            if (strstr(record, search))
            {
                token = strtok(record, s); 

                while (strtok != NULL)
                {

                    scanf("%s", c.name);
                    token = strtok(record, s);
                    scanf("%d", c.age);
                    token = strtok(record, s);
                    scanf("%d", c.phoneNo);
                    token = strtok(NULL, s);

                    printf("Your details: ");
                    printf("%s, %d, %d\n", c.name, c.age, c.phoneNo);

                }
                
                foundRecord = 1;
            }
        }
        if (!foundRecord)
            printf("%s cannot be found\n", search);

        fclose(fPtr);
    }
    else
    {
        printf("File cannot be opened\n");
    }
}

我以前从未使用strtok过,我不确定如何将每个令牌存储到每个结构变量中。有人可以向我解释如何strtok在代码中修复该功能吗?

罗汉·库玛(Rohan Kumar)

如注释中所建议,您可以使用轻松读取逗号分隔的字符串strtok您可以使用atoi/sscanf从年龄中提取整数值。我对您的代码进行了一些修改,以从文件读取以分配给struct数组:

// Array for storing Profiles
struct profile profiles[2];

FILE* fPtr;
if (fPtr = fopen("profile.txt", "r")) {
    int index = 0;
    while (fgets(record, 50, fPtr) != NULL) {
        // Extract name
        char *pStr = strtok(record, ",");
        if (pStr != NULL) {
            strcpy(profiles[index].name, pStr);
        }
        // Extract Age
        pStr = strtok(NULL, ",");
        if (pStr != NULL) {
            profiles[index].age = atoi(pStr);
        }
        // Extract Phone No
        pStr = strtok(NULL, ",");
        if (pStr != NULL) {
            profiles[index].phoneNo = atoi(pStr);
        }
        index++;
    }

    for (int i = 0; i < 2; i++) {
        printf("%s %d %d\n", profiles[i].name, profiles[i].age, profiles[i].phoneNo);
    }
     
    fclose(fPtr);
}

运行此命令时,我可以看到预期的输出:

src : $ cat profile.txt 
James Brown,35y,0123456789
Mary Brown,45y,0123987456
src : $ gcc readfiletostructarr.c 
src : $ ./a.out 
James Brown 35 123456789
Mary Brown 45 123987456

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用strtok对C中的字符串进行标记(包括数字作为分隔符)

来自分类Dev

使用strtok函数在C中拆分字符串

来自分类Dev

使用JScript.NET将字符串的一部分匹配并存储在变量中

来自分类Dev

SQL解析数字数据的列字符串并存储在单独的列中

来自分类Dev

如何使用空字符作为分隔符来strtok()字符串?

来自分类Dev

分割一组字符串并存储在动态变量中

来自分类Dev

如何在Python字典中查找并存储字符串中子字符串的出现次数?

来自分类Dev

使用定界符将字符串分解为特定数据,并存储在PHP中的数组中

来自分类Dev

如何在集合中获取所有文档的ID并存储在字符串数组中?

来自分类Dev

不使用strtok返回c中剩余的字符串

来自分类Dev

如何在javascript中操作字符串的升序和降序并存储在变量中

来自分类Dev

使用strtok分隔字符串并存储在struct中

来自分类Dev

读取多个文件,搜索字符串并存储在列表中

来自分类Dev

从python中的字符串中选择并存储数据

来自分类Dev

用strtok分隔字符串

来自分类Dev

使用区域性信息将字符串转换为时间并存储在SQL中

来自分类Dev

无法从文本文件读取并存储到字符串中

来自分类Dev

使用strtok函数在C中拆分字符串

来自分类Dev

如何分割字符串并存储在php变量中

来自分类Dev

使用strtok从字符串中解析单词

来自分类Dev

使用DOT分隔符分割UNIX字符串并存储在变量中

来自分类Dev

从字符串中删除正则表达式模式并存储在csv中

来自分类Dev

如何复制存储在strtok()令牌中的字符串?

来自分类Dev

如何将数字转换为ASCII值或字符并存储在字符串数组中

来自分类Dev

C - 使用 strtok 通过分隔符“/”分割字符串“mv <from> <to>”

来自分类Dev

使用strtok解析C中的字符串并存储在数组中

来自分类Dev

如何用逗号分隔字符串并存储在字符串中

来自分类Dev

如何在分隔符前后提取字符串并存储在mysql中?

来自分类Dev

拆分字符串并存储到熊猫数据框中的新列中

Related 相关文章

  1. 1

    使用strtok对C中的字符串进行标记(包括数字作为分隔符)

  2. 2

    使用strtok函数在C中拆分字符串

  3. 3

    使用JScript.NET将字符串的一部分匹配并存储在变量中

  4. 4

    SQL解析数字数据的列字符串并存储在单独的列中

  5. 5

    如何使用空字符作为分隔符来strtok()字符串?

  6. 6

    分割一组字符串并存储在动态变量中

  7. 7

    如何在Python字典中查找并存储字符串中子字符串的出现次数?

  8. 8

    使用定界符将字符串分解为特定数据,并存储在PHP中的数组中

  9. 9

    如何在集合中获取所有文档的ID并存储在字符串数组中?

  10. 10

    不使用strtok返回c中剩余的字符串

  11. 11

    如何在javascript中操作字符串的升序和降序并存储在变量中

  12. 12

    使用strtok分隔字符串并存储在struct中

  13. 13

    读取多个文件,搜索字符串并存储在列表中

  14. 14

    从python中的字符串中选择并存储数据

  15. 15

    用strtok分隔字符串

  16. 16

    使用区域性信息将字符串转换为时间并存储在SQL中

  17. 17

    无法从文本文件读取并存储到字符串中

  18. 18

    使用strtok函数在C中拆分字符串

  19. 19

    如何分割字符串并存储在php变量中

  20. 20

    使用strtok从字符串中解析单词

  21. 21

    使用DOT分隔符分割UNIX字符串并存储在变量中

  22. 22

    从字符串中删除正则表达式模式并存储在csv中

  23. 23

    如何复制存储在strtok()令牌中的字符串?

  24. 24

    如何将数字转换为ASCII值或字符并存储在字符串数组中

  25. 25

    C - 使用 strtok 通过分隔符“/”分割字符串“mv <from> <to>”

  26. 26

    使用strtok解析C中的字符串并存储在数组中

  27. 27

    如何用逗号分隔字符串并存储在字符串中

  28. 28

    如何在分隔符前后提取字符串并存储在mysql中?

  29. 29

    拆分字符串并存储到熊猫数据框中的新列中

热门标签

归档