C言語関係掲示板

過去ログ

No861 文字列****123から123を整数として取り出したい

[戻る] [ホームページ]
No.11111

atoiに似たもの
投稿者---keku(2003/12/12 16:10:14)


文字列123****
から123を整数として取り出したいときは
atoiを使えばいいのはわかるのですが
****123
から123を取り出したいときはどのようにすればいいのでしょうか?

No.11117

Re:atoiに似たもの
投稿者---たか(2003/12/12 16:38:01)


>文字列123****
>から123を整数として取り出したいときは
>atoiを使えばいいのはわかるのですが
>****123
>から123を取り出したいときはどのようにすればいいのでしょうか?

*をスキップすればいいと思います。

#include <stdio.h>

int main(void)
{
  char p[] = "****123";
  char *s = p;
  
  while (*s && *s == '*') s++;
  
  printf("%d\n", atoi(s));
  
  return 0;
}


No.11120

Re:atoiに似たもの
投稿者---keku(2003/12/12 16:48:59)


私の説明不足でしたすいません。^^;
ABBbbb*123
のように*とは限らないときのことも
できれば教えてもらいたいです。

No.11121

Re:atoiに似たもの
投稿者---NykR(2003/12/12 17:14:41)


!isdigit(*s)を代わりに使います。

No.11122

Re:atoiに似たもの
投稿者---たか(2003/12/12 17:17:04)


>!isdigit(*s)を代わりに使います。

#include <ctype.h> もして下さいね〜。

No.11126

Re:atoiに似たもの
投稿者---NykR(2003/12/12 17:43:34)


こういう手もあるかな。
#include <stdio.h>

int main(void)
{
  char p[] = "***123";
  int i;  

  sscanf(p, "%*[^0-9]%d", &i);  
  printf("%d\n", i);
  
  return 0;
}


No.11131

Re:atoiに似たもの
投稿者---keku(2003/12/12 18:04:57)


なるほど〜
参考になりました。
ありがとうございました。