将字符串的特定部分转换为整数
converting specific part of string to integer
*更新了我如何将字符串存储到我的结构中
我有一个结构如下:
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, pStr);
}
pStr = strtok(NULL, ",");
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
,然后使用 atoi
将 a
转换为整数 IDno
。我不太确定这一点,但我认为通过使用 atoi
将“PT3”转换为整数,只有整数“3”会保留在 IDno
中,这正是我想要的。
编辑:问题似乎是我无法使用 atoi
将“PT3”转换为整数。希望能帮助您将“PT3”中的数字“3”存储到 IDno
.
根据您的问题描述,您似乎需要 sscanf()
。像
sscanf(a, "PT%d", &IDno);
应该完成这项工作。不要忘记进行错误检查。
*更新了我如何将字符串存储到我的结构中
我有一个结构如下:
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, pStr);
}
pStr = strtok(NULL, ",");
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
,然后使用 atoi
将 a
转换为整数 IDno
。我不太确定这一点,但我认为通过使用 atoi
将“PT3”转换为整数,只有整数“3”会保留在 IDno
中,这正是我想要的。
编辑:问题似乎是我无法使用 atoi
将“PT3”转换为整数。希望能帮助您将“PT3”中的数字“3”存储到 IDno
.
根据您的问题描述,您似乎需要 sscanf()
。像
sscanf(a, "PT%d", &IDno);
应该完成这项工作。不要忘记进行错误检查。