文章を読んでいて、『セパレータ文字』という言葉が出てきます。
例文: 文字列からトークンを切り出す。"" で囲まれた文字列内では、セパレータ文字は、単なる文字として扱う。

この『文字列』はファイルのパスみたいなものと考えて頂てください。このときセパレータ文字とは、『/と\』の事なのでしょうか?又別の意味や、足りない意味などございませんでしょうか?宜しくお願いします。あと、申し訳ないのですが、よろしければトークンの意味もお教えくだされば、助かります。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

セパレータ文字とは、文字列を区切る(セパレートする)文字のことで、ファイルのパスでしたら、/とか¥のことです。



よく使われるのは、カンマ(,)とか、タブとか、セミコロン(;)とかですね。
CSV(カンマ区切りテキスト)形式では、カンマ(と改行文字)でセパレートされた文字列になります。
    • good
    • 0
この回答へのお礼

迅速な回答、どうもありがとうございます。
セパレータ=区切るの意味なのですね。まだプログラムに慣れていないもので、『区切る』という意味すらも、判っていませんでした(>_<)勉強になります!

お礼日時:2003/09/17 09:39

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QF905i の文字サイズ

F905iを使用の方にお伺いします。
現在SH902iを使用していますが機種変更でF905iを考えています。
Fのホームページでいろいろ見たのですが

「文字サイズの変更が可能な項目は「iモード」「フルブラウザ」「メール閲覧」「メール編集/文字入力」「電話帳/履歴」の計5項目。最大で6段階の文字サイズの中から、スタイルに合わせて選択できす。」

と有りますが テキストメモ 作成では文字サイズが上記「文字入力」ということで文字を大きく表示できるのでしょうか?
SH902iではメールは文字サイズが大きく表示できますが テキストメモ
の場合は大きく出来ません、その点が気になりましたので教えてください。
らくらくホン プレミアムなら良いのでしょうが F905i のほうが好みなので・・・

Aベストアンサー

テキストメモを編集(作成)するときの入力画面は「メール編集/文字入力」の設定で「極小・最小・小・中(標準)・大・最大」の6段階で変えることができます。
なお、テキストメモの一覧や参照の画面は標準サイズのままで変更できないみたいです。

Qgccで入力した文字列をトークンで分割したい。

現在キーボードから文字列を入力し、その文字列内にスペースが入っていた場合は、それをトークンしてそれぞれの文字列を分けたいと考えています。

そこでトークンに関して次のサイトを見つけました。

http://www1.cts.ne.jp/~clab/hsample/Func/Func08.html

こちらのサイトで紹介されていたサンプルプログラムでzooの中に入っている文字列をトークンして分割する方法で実際やってみたところ、

printfでトークンされた文字列を表示することができることを確認しました。


char zoo[] = "Cat, Dog, Tiger, Bug, Bird, Fish, Seep, Cow, Pig, Rat";

あらかじめ文字列を用意しているやり方を、この文字列をキーボードで打ち込んだ文字列でも同じことができないかと思い

scanf("%s", zoo);


というふうにやってみたところ、コンパイルはできるのですが、
実行してみると、
strcpy(animal[0], strtok(zoo, token));

この時にSegmentation fault (core dumped)

というエラーが発生してプログラムが停止してしまいます。

解決する方法を教えて頂きますよう、お願い致します。







(プログラム内容)

#include <stdio.h>

#define NUM_DATA 10
#define LEN_DATA 20


char zoo[] = "Cat, Dog, Tiger, Bug, Bird, Fish, Seep, Cow, Pig, Rat";


main(void)
{
//char s[100];
//char *s;

char animal[NUM_DATA][LEN_DATA];
char *token = " ,"; /* 区切り文字はスペースとカンマ */
int i;

printf("Please type:");
scanf("%s", &zoo);


printf("original:\t");
printf("%s\n\n", zoo); /* トークンを取り出す文字列を表示 */

printf("got token results:\n");

strcpy(animal[0], strtok(zoo, token)); /* 1度目の呼び出し */

printf("%s\t", animal[0]);

for (i = 1; i < NUM_DATA; i++)
{ /* 2度目以降の呼び出しは */
strcpy(animal[i], strtok(NULL, token)); /* 最初の引数にNULLを指定 */
printf("%s\t", animal[i]);
}

//if (animal[0] == "TOSHIO")
if(strcmp(animal[0],"TOSHIO")==0)
{
printf("TOSHIO you typed. \n");
}
else
{
printf("_%s_typed \n",animal[0]);
}




}

//http://www1.cts.ne.jp/~clab/hsample/Func/Func08.html

現在キーボードから文字列を入力し、その文字列内にスペースが入っていた場合は、それをトークンしてそれぞれの文字列を分けたいと考えています。

そこでトークンに関して次のサイトを見つけました。

http://www1.cts.ne.jp/~clab/hsample/Func/Func08.html

こちらのサイトで紹介されていたサンプルプログラムでzooの中に入っている文字列をトークンして分割する方法で実際やってみたところ、

printfでトークンされた文字列を表示することができることを確認しました。


char zoo[] = "Cat, Dog, Tiger, Bug,...続きを読む

Aベストアンサー

マニュアル、読んでますか?
○scanfの動作
○strtokの動作
○strcpyの動作
の理解が不十分だと思われます。

scanfのマニュアルの1例です。
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/scanf.3.html
> 変換指定には、以下の 「型修飾子」 を入れることができる。
> s
> ホワイトスペースではない文字で構成された文字列に対応する
> 文字列の入力は、ホワイトスペースが入力されるか、最大フィールド幅に 達するか、のどちらかが起こると停止される。

%s を使って読み込んだ「ホワイトスペースではない文字で構成された文字列」を、どうやって「ホワイトスペース」で分割するというのでしょう?


http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/strtok.3.html
> 返り値
> strtok() と strtok_r() は次のトークンへのポインタか、 トークンがなければ NULL を返す。

必ず10回実行しているので、トークンの数がそれより少ないとNULLが返ってきます。
ここでNULLが返ると

strcpy(animal[i], strtok(NULL, token));

strcpy(animal[i], NULL);
になります。
この結果が、どうなるかわかりますか?

マニュアル、読んでますか?
○scanfの動作
○strtokの動作
○strcpyの動作
の理解が不十分だと思われます。

scanfのマニュアルの1例です。
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/scanf.3.html
> 変換指定には、以下の 「型修飾子」 を入れることができる。
> s
> ホワイトスペースではない文字で構成された文字列に対応する
> 文字列の入力は、ホワイトスペースが入力されるか、最大フィールド幅に 達するか、のどちらかが起こると停止される。

%s を使って読み込んだ「ホワイトスペースでは...続きを読む

QF905iで、デコメ絵文字をすぐ呼び出す方法はありますか?

F905iを使っていますが、絵文字よりデコメ絵文字を多用します。
デコレーション⇒右キー3回⇒○ボタン⇒本体ボタン⇒少し待って⇒デコメ絵文字
という順番でやっていますが、辞書登録等何かすぐに呼び出す良い方法はありますか?

Aベストアンサー

メール作成で絵・記号を3回押すと絵文字D(デコメ絵文字)が出せますがそれが一番早いと思います。
F906iであれば絵・記号を1回押せば絵文字D(デコメ絵文字)になりますが・・・

Q大文字の文字列→小文字の文字列

C言語初心者です。
ある演習問題をやっていて詰まっています。
自分で入力した大文字の文字列を小文字にするプログラムを作るという問題なのですが、↓の条件があり、こんがらがってしまいました。
・入力した文字列に小文字が含まれていたら、エラーと表示して再び入力を促し、0を入力するとプログラム終了という流れにする。
・ポインタ変数を使う。
・continue文を使う。
・標準ライブラリ関数は使わない。
です。

・continue文というのがよくわからない。
・宣言した関数でどの処理をすればいいのかわからない。
・大文字を小文字にするというプログラムがわからない。
(アスキーコードをどう使うのか)
でつまっています。


どなたかアドバイス・解説・模範解答・指摘などしていただけないでしょうか。
よろしくお願い致します。

Aベストアンサー

> 文字列定数の前に 構文解析エラー
> 警告: 組み込み関数 `printf' と型が矛盾します
> 警告: データ定義が型や記憶クラスを持っていません
>
> というエラーがでました
> これは何ですか・・・?

printfの直前にある } は、int main(void){ の { と対応しています。
つまり、printfは関数の外で呼び出していることになります。
また、<stdio.h>もインクルードしていないようです。

ところで、アルファベットが連続していることは規格上保証されていません。処理系不明の状況で、

> while(a<='A' && a>='Z'){
> if(a>='a' && a<='z') {
> a-='a'-'A';

といった処理は不適切です。

参考URL:http://www.kijineko.co.jp/tech/superstitions/A-to-Z-is-sequence.html

Qキーボード ワード・エクセルで入力直後の文字の繰り返しはF5?

キーボード
 ワード・エクセルで入力直後の文字の繰り返しはF5?では無かったですか?
F5を入力するとジャンプになります。
Fの何番をおせば繰り返し同じ作業ができますか?
仕事で今入力しなければいけないので助けてください。

Aベストアンサー

[F4]

Q文字列中からある文字列とある文字列の間にある文字列を取得

表題にあるとおり間の文字列をどうやって取得するべきかと悩んでいます・・
abcdefghijklmn・・・
となっているとき
bとe、aとkなど間の間隔が不定なときはどのようにして文字列を取得したらよいのでしょうか?
最初の2文字は与えられているとして考えています。
インターネットのURLで言うなら/から/までの間の文字列と言うことになります。
今私が考えているのは
strchrで位置のアドレスを取得してそこからfor文かwhile文で指定の2文字目が出るまでまわすのかなぁ・・と思っています。
ですが具体的にどのような感じに書けばいいのかがわかりません。どなたかご教授ください。

Aベストアンサー

2文字の間でいいのなら strchr() を2回使えばいいと思います。



char *p, *q;

if ((p = strchr(s, 'b')) != NULL) {
 if ((q = strchr(p + 1, 'e')) != NULL) {
  /* p + 1 ~ q - 1 が 'b' から 'e' の間の文字列 */
  size_t len = q - p - 1; /* これがバイト数 */
  printf("%-.*s\n", len, p + 1); /* 出力 */
 }
}

複数の文字の中のいずれかの文字が出現した所で区切りたいなら strpbrk() か strtok() を使えばいいと思います。

QF503iの絵文字はどこに?

F503iを使用していますが、この機種は絵文字はどうやって出すのですか?絵文字を選んでもそれらしきものはないので、選ぶ場所が違うのでしょうか?

Aベストアンサー

F系は文字打ち込み式ですね、ハートとか

Q”123456”といった整数を文字列に変換、その後、文字列を1文字ごとに整数に変換 

忙しい中失礼します。

http://oshiete1.goo.ne.jp/qa3424254.htmlでも質問させて頂いたものですが、

今、回答してくださった方の意見を参考に以下の過程をこなそうとしています。

1.整数入力
→scanf関数を使用し、"123456"と入力します。
2.整数を文字列に変換
→ printf("Write the SIN: \n");
  scanf("%d", &fnum);
  printf("%c\n",fnum);
で、"123456"と数値を入力しても”123456”という値が返されず、@となってしまいます。
どうすれば入力した数値が文字列として返ってくるのでしょうか?
どんな文・関数を使用すれば数字を文字列として使用することが可能になるのでしょうか?
今のところ習っている文はif else, swith case, while for,do whileで、
getcharやstr?(string)という関数は習っていません。なので、どうプログラムを書けばいいのか??さっぱりなのです。
でもgetcharやstr?(string)という関数を使用するしか方法はないものなのでしょうか?

 また、それから

3.文字列を1文字ごとに整数に変換
 にする場合、どんな文・関数を使用すれば、1文字”ごと”に整数に変換できるのでしょうか?

ごめんなさい、分からないのです。プログラム文、ヒントもしくは参考になるページ等があれば教えて下さい。
よろしくお願いします。

<使用環境:フリーソフト(Borland?)C ANSI C>

忙しい中失礼します。

http://oshiete1.goo.ne.jp/qa3424254.htmlでも質問させて頂いたものですが、

今、回答してくださった方の意見を参考に以下の過程をこなそうとしています。

1.整数入力
→scanf関数を使用し、"123456"と入力します。
2.整数を文字列に変換
→ printf("Write the SIN: \n");
  scanf("%d", &fnum);
  printf("%c\n",fnum);
で、"123456"と数値を入力しても”123456”という値が返されず、@となってしまいます。
どうすれば入力した数値が文字列として返ってくるのでし...続きを読む

Aベストアンサー

C言語の文字列を処理する関数を使わずにプログラム化することは難しいです。sprintfとか文字配列の処理とか習ってますか?
私としては前回の#4のtekcycleさんの数値で処理するほうが良いんじゃないかと思いますが。計算で余りを取る%とか習ってます?
どこまでC言語の機能を使ってよいか知っていることを出来るだけ書き出してくださいね。

Qf(0)とf(0+)の違い。(+は上付き文字)

例えば、y=f(t)の関数で考えた場合、

f(0)とは、t=0のときのyの値だと思いますが、

f(0+)とは、何なのでしょうか?(+は上付き文字です。)
f(0)とf(0+)の違いは何なのでしょうか?

よろしくお願いします。

Aベストアンサー

f(0+) てのは、あまり見掛けない式だが、
f(+0) の見間違いではないのかな?
f(+0) = lim[x→+0] f(x) だけれども。
lim[x→+0] は、x が正値のみとりながら
0 に近付くという意味で、形式的には
lim[x→+0] f(x) = a ⇔ ∀ε>0,∃δ>0,(0<x<δ⇒|f(x)-a|<ε).
あるいは、f(0+何たら) の「何たら」が落丁してるとか。

QC++で文字列の右端から特定の文字までの文字列を

C++で文字列の中から,文字列の右端から特定の文字までの文字列を取り出すというものを作りたいと思っています。

右端から○文字取り出す。といった感じのコードは書けるのですが、特定の文字まで、というのがどうもうまくいきません。こちら、良いアドバイスをいただける方がいましたらよろしくお願いします。

例:ファイル名を抽出
文字列\system32\notepad.exeからnotepad.exeの部分だけを取り出したい。というものです。
初めに見つけた\まで取り出す・・とやればよいのでしょうが、その方法が今ひとつ良くわからないので、どうかご助力お願いいたします。

Aベストアンサー

具体的なコードにもよりますが、

> 右端から○文字取り出す。といった感じのコードは書けるのですが

だったら、ほぼできていると思います。

char src[1000]; に文字列が入っているとして、

そのコードに、

int j = src[] にある、最後の文字を示すインデックス
for(int i = 0; i < ○; i++)
{
src[j] を取り出す;
j--;
}

という部分があるなら、

while(src[j] != '\\')

に書き直すだけ。

または、

for(int j = src[] にある、最後の文字を示すインデックス; (j >=0 ) && src[j] != '\\'; j--)

にするとか。

でも、「どうもうまくいきません」なら、「こういうことをしたら、こうなってしまいました」というのがあるほうが親切ですね。


人気Q&Aランキング