質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

2回答

4544閲覧

Stringの文字を配列に変換して利用したい。Arduino(C/C++)

rubysyoshinsya

総合スコア35

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2016/08/29 22:02

Arduinoのプログラムを書いており、サーバからの文字をStringで取得したものを配列で利用したいと考えているのですが、どの様にすると良いのでしょうか?

//サイトにアクセスしてそのサイトからの数値を取得する処理 省略 if(httpCode == HTTP_CODE_OK) { String payload = http.getString(); //payloadの値=>{10, 20, 30, 40}を返します。 省略

↑ ここで payload で {10, 20, 30, 40} という数値をStringにて取得しています。
上記で取得した数値を以下の様なを配列で利用したいと考えています。

array[0] //10 array[1] //20 array[2] //30 array[3] //40

以下の方法を試してみましたが上手くいきませんでした。

char test[255]; payload.toCharArray(test, 255); println(test); //{10, 20, 30, 40} println(test[0]); // { println(test[1]); // 1 println(test[2]); // 0 println(test[3]); // ,

その他にも。

char* myStrings[]={ payload }; // cannot convert 'String' to 'char*' in initialization とのエラー表示です。 //chatに変換したtestでも行いました。 char* myStrings[]={ test }; println(myStrings[0]); // {10, 20, 30, 40} println(myStrings[1]); // 表示なし println(myStrings[2]); // 表示なし println(myStrings[3]); // 表示なし

10, 20, 30, 40と個別に取得出来る良い方法があれば教えて頂けると幸いです。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Arduinoで標準関数使えるなら:

C

1#include <string.h> /* strtok */ 2#include <stdlib.h> /* atoi */ 3#include <stdio.h> /* printf */ 4 5int main() { 6 char input[] = "{10, 20, 30, 40}"; 7 char* token; 8 for ( token = strtok(input,"{} ,"); token != NULL; token = strtok(NULL,"{} ,") ) { 9 printf("%d\n", atoi(token)); 10 } 11}

投稿2016/08/30 02:10

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rubysyoshinsya

2016/08/31 04:39

ご回答有難う御座います。なるほどやはり一つ一つ分解といいますか指示して取得していかないとダメなんですね。 ソースコードも有難う御座います。参考にさせて頂きます。
guest

0

Arduinoは触ったことないですが、調べた限りでは1回の処理で目的の数値を配列に入れるのは難しいかと。
0. まず、文字列から先頭と末尾の { と } を取り外す。(もしくは {} で囲われた文字列を抜き出す。
0. 次に、カンマで区切られたその文字列を、splitか何かを使って分解する。

という処理をすればできると思います。

投稿2016/08/29 23:12

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rubysyoshinsya

2016/08/31 04:41

ご回答有難う御座います。ArduinoはCとC++がベースの様です。 細かく指示をして値を取得するのが確実かもしれませんね。とても参考になりました。有難う御座います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問