#1
by gan » 4年前
strtok 関数を使わずに文字列を分解する方法が全く思いつかないです。
以下、コードです。
コード:
#include <stdio.h>
struct string{
char c[100]; /* 文字 */
};
struct str_split{
int index; /* 分割個数 */
struct string str[100]; /* 分割文字列 */
};
/*
名称 split
引数 const char *in_dat:文字列(カンマ区切り)
struct str_split *out_dat:分割文字列
戻り値 無し
*/
/*----- ここより下に解答を記述してください -----*/
void split(const char *in_dat, struct str_split *out_dat)
{
int i = 0;
for(in_dat != 0){
(out_dat->str[i]) = (in_dat[i]);
i++;
}
return;
}
/*----- ここより上に解答を記述してください -----*/
int main(void)
{
char in_buf[100];
struct str_split out_buf;
int i;
printf("文字列(カンマ区切り)=");
scanf("%s", &in_buf);
/*----- ここより下に解答を記述してください -----*/
void split(in_buf, out_buf);
/*----- ここより上に解答を記述してください -----*/
puts("----- 処理後 -----");
for(i = 0; i < out_buf.index; i++)
printf("%d:%s\n", i + 1, out_buf.str[i].c);
return 0;
}
表示例① 表示例②
文字列:12,345 文字列:12,,345
1:12 1:12
2:345 2:
3:345
このような答えを表示したいです。
配列に入っているカンマ付きの文字列をまず、分割文字列の配列に移し、
一文字ずつ判定(カンマが来たら\0を代入)して文字の配列に入れるのかなと考えました。
プログラムも途中ですいません。上記の表示例を出すためにはどのように書けばいいのかご教授願いたいです。
構造体の配列部分のところもいまいちなのでその部分もお時間ありましたら教えてください。
strtok 関数を使わずに文字列を分解する方法が全く思いつかないです。
以下、コードです。
[code]
#include <stdio.h>
struct string{
char c[100]; /* 文字 */
};
struct str_split{
int index; /* 分割個数 */
struct string str[100]; /* 分割文字列 */
};
/*
名称 split
引数 const char *in_dat:文字列(カンマ区切り)
struct str_split *out_dat:分割文字列
戻り値 無し
*/
/*----- ここより下に解答を記述してください -----*/
void split(const char *in_dat, struct str_split *out_dat)
{
int i = 0;
for(in_dat != 0){
(out_dat->str[i]) = (in_dat[i]);
i++;
}
return;
}
/*----- ここより上に解答を記述してください -----*/
int main(void)
{
char in_buf[100];
struct str_split out_buf;
int i;
printf("文字列(カンマ区切り)=");
scanf("%s", &in_buf);
/*----- ここより下に解答を記述してください -----*/
void split(in_buf, out_buf);
/*----- ここより上に解答を記述してください -----*/
puts("----- 処理後 -----");
for(i = 0; i < out_buf.index; i++)
printf("%d:%s\n", i + 1, out_buf.str[i].c);
return 0;
}
[/code]
表示例① 表示例②
文字列:12,345 文字列:12,,345
1:12 1:12
2:345 2:
3:345
このような答えを表示したいです。
配列に入っているカンマ付きの文字列をまず、分割文字列の配列に移し、
一文字ずつ判定(カンマが来たら\0を代入)して文字の配列に入れるのかなと考えました。
プログラムも途中ですいません。上記の表示例を出すためにはどのように書けばいいのかご教授願いたいです。
構造体の配列部分のところもいまいちなのでその部分もお時間ありましたら教えてください。