我会从 ISBN 字符串中删除“-”。 但是我的代码没有打印出我的值(value)。错在哪里?
char *ISBN[20]; //example: 3-423-62167-2
*p = ISBN;
strcpy(ISBN, ptr); //Copy from a Buffer
printf("\nISBN Array: %s", ISBN); //This works!
while(*p)
{
if (isdigit(*p))
{
long val = strtol(p, &p, 10);
printf("%ld\n", val); //Do not show anything!
}
else
{
p++;
}
}
最佳答案
关于:
for (char* p = ISBN; *p != '\0'; p++)
{
if (isdigit(*p))
{
printf("%c", *p);
}
}
如果你想要一个long
:将字符保存在一个char[]
中(而不是printf()
),然后,当完成,将其转换为 long
。您甚至可以使用 ISBN
数组进行就地转换:
int i = 0;
for (char* p = ISBN; *p != '\0'; p++)
{
if (isdigit(*p))
{
ISBN[i++] = *p;
}
}
ISBN[i] = '\0';
long isbn = strtol(ISBN, NULL, 10);
顺便说一句,当 is digit()
为真时,您忘记了 p++
。
关于c - 从字符串中提取数字不起作用! C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21229796/