gpt4 book ai didi

c - 从表示为 char[] 的街道地址解析门牌号

转载 作者:太空宇宙 更新时间:2023-11-04 04:37:18 25 4
gpt4 key购买 nike

假设我有一个存储为 char[] 的街道地址。有效值示例:

  • 1600 宾夕法尼亚大道
  • 1 个无限循环
  • 贝克街 221 号

如您所见,门牌号可以是任意长度。

在 C 语言中,将门牌号分离为它自己的 int 的有效方法是什么?我想我需要编写一个 while 循环来检查每个字符 c if isdigit(c),但我不知道我在实现方面是否走在正确的轨道上。

最佳答案

您可以使用 strtok 将字符串分解为标记并使用 isdigit() 来确定该标记是否为数字。

#include <string.h>
#include <stdio.h>

int main()
{
const char str1[80] = "1600 Pennsylvania Ave";
int houseNumber = 0;
const char s[2] = " ";
char *token;

/* get the first token */
token = strtok(str, s);

/* walk through other tokens */
while( token != NULL ) {
printf( " %s\n", token );
if (isdigit(str1[0])) {
houseNumber = atoi (token);
}
token = strtok(NULL, s);
}

return(0);
}

或者,您可以使用 sscanf 读取整个字符串并自动解析所有内容:

#include <string.h>
#include <stdio.h>

int main()
{
const char str1[80] = "1600 Pennsylvania Ave";
int houseNumber = 0;
char streetName[50];
char streetExt[20];

sscanf (str1,"%d %s %s", &houseNumber, streetName, streetExt);

return(0);
}

最后一种方法取决于字符串的格式在所有情况下都完全相同,这意味着它始终是一个数字后跟 2 个字符串。如果有更多其他内容,strtok 方法将更具容错性。

关于c - 从表示为 char[] 的街道地址解析门牌号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29641055/

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