strtok機能
strtok機能がひもの次のトークンを見つけるのに使用されている。 トークンは可能な区切りのリストによって指定される。
次の例はファイルからのテキスト行を読み、区切り、スペース、タブおよび復帰改行文字を使用して単語を定める。 各単語は別々のラインにそれから表示される:
#include <stdio.h>
#include <string.h>
int main()
{
FILE *in;
char line[80];
char *delimiters = " \t\n";
char *token;
if ((in = fopen("C:\\text.txt", "r")) == NULL)
{
puts("Unable to open the input file");
return 0;
}
/* 一つずつ各ラインを読みなさい */
while(!feof(in))
{
/* Get one line */
fgets(line, 80, in);
if (!feof(in))
{
/* 単語に整列を壊しなさい */
token = strtok(line, delimiters);
while (token != NULL)
{
puts(token);
/* 次の単語を得なさい */
token = strtok(NULL, delimiters);
}
}
}
fclose(in);
return 0;
}
プログラムの上のそれは、で= (「C:\ \ text.txt」、「r」) fopen、および既存のファイルC:\ \ text.txt開く。 指定道にまたはあらゆる理由のために存在しなかったら、ファイルはスクリーンにエラーメッセージ表示される開いてもよい。
これらの機能のいくつかを使用する次の例を考慮しなさい、:
#include <stdio.h>
#include <string.h>
void main()
{
char line[100], *sub_text;
/* ひもを初期設定しなさい */
strcpy(line,"hello, I am a string;");
printf("Line: %s\n", line);
/* ひもの端に加えなさい */
strcat(line," what are you?");
printf("Line: %s\n", line);
/* ひもの発見の長さ */
/* 戻すstrlen */
/* タイプsize_tとして長さ */
printf("Length of line: %d\n", (int)strlen(line));
/* サブストリングの発見発生 */
if ( (sub_text = strchr ( line, 'W' ) )!= NULL )
printf("String starting with \"W\" ->%s\n",
sub_text);
if ( ( sub_text = strchr ( line, 'w' ) )!= NULL )
printf("String starting with \"w\" ->%s\n",
sub_text);
if ( ( sub_text = strchr ( sub_text, 'u' ) )!= NULL )
printf("String starting with \"w\" ->%s\n",
sub_text);
}
プログラムの出力は次の通り表示される:
Line: hello, I am a string;
Line: hello, I am a string; what are you?
Length of line: 35
String starting with "w" ->what are you?
String starting with "w" ->u? |
|