将字符串的特定部分转换为整数

问题描述

* 更新了我将字符串存储到结构中的方式

我的结构如下:

struct patient {
    char name[30],ID[8];
    int age,phoneNo;
};

并且我编写了以下代码:


int searchName()
{
    char search[30];
    char record[60];
    const char s[2] = ",";
    struct patient c;
    char a[8];
    int IDno;

FILE* fPtr;
    fPtr = fopen("patient.txt","r");

    printf("Enter name to search : ");
    getchar();
    fgets(search,30,stdin);

    //remove the '\n' at the end of string
    search[strcspn(search,"\n")] = 0;

    while (fgets(record,60,fPtr))
    {
        // strstr returns start address of substring in case if present
        if (strstr(record,search))
        {
            char* pStr = strtok(record,",");
            if (pStr != NULL) {
                strcpy(c.ID,pStr);
            }
            pStr = strtok(NULL,");
            if (pStr != NULL) {
                strcpy(c.name,");
            if (pStr != NULL) {
                c.age = atoi(pStr);
            }
            pStr = strtok(NULL,");
            if (pStr != NULL) {
                c.phoneNo = atoi(pStr);
            }
        }

    }

    printf("%s",c.ID);
    strcpy(a,c.ID);
    printf("\n%s",a);
    IDno = atoi(a);
    printf("\n%d",IDno);
    return 0;
}

该代码允许我搜索文件中的字符串,使用strtok将字符串分成较小的字符串,然后将其存储到结构中。假设我将字符串“ PT3”存储到结构中的c.ID中。在我的程序中,我试图将字符串“ PT3”从c.ID复制到a,然后使用aIDno转换为整数atoi。我对此不太确定,但是我认为通过使用atoi将“ PT3”转换为整数,{整数{3}”将仅保留在IDno中,这正是我想要的时间。

编辑:问题似乎是我无法使用atoi将“ PT3”转换为整数。希望能帮助您将“ PT3”中的数字“ 3”存储到IDno中。

解决方法

根据您的问题描述,您似乎需要sscanf()。像

sscanf(a,"PT%d",&IDno);

应该做的工作。不要忘记进行错误检查。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...