|
ありがとうございます。
>>strcat("問", itoa(mondaiNo, add, 10));
>>strcat("=", add);
>
>問題ありなコードです。
>ここで落ちているかもしれません。
>連結した結果はどこに行くのでしょう?
確かに文字列が連結されて書きこまれていません。
どのようにすれば連結された文字列で書きこまれるのでしょうか?
strcatなしの下記のソースでもstrtokで最後の文字が表示された直後に
落ちます。
#include <stdio.h>
#include <string.h>
#define MONDAISU 10
void main ( void )
{
FILE *fin;
// char s[] = "1,2,2,1,2,1,3,2,1,2";
char s[30];
char tokenCopy[MONDAISU][256];
char *token = ","; /* 区切り文字はスペースとカンマ */
int i;
/* 入力ファイルオープン */
if( (fin=fopen("b.txt","a+"))==NULL) {
printf("入力ファイルがオープンできません\n");
exit(1);
}
/* ファイルを1行ずつ読み出す */
//ファイルを1行ずつ読み出すとfor文で最後の文字が表示されたところで落ちます。
while(fgets(s,256,fin)!=NULL) {
printf("s = %s", s);
}
printf("オリジナル:\t");
printf("%s\n\n", s); /* トークンを取り出す文字列を表示 */
printf("取り出したトークン:\n");
strcpy(tokenCopy[0], strtok(s, token));
printf("%s\t", tokenCopy[0]);
for (i = 1; i < MONDAISU; i++) {
strcpy(tokenCopy[i], strtok(NULL, token));
printf("%s\t", tokenCopy[i]);
}
}
ソース内に下記のようにchar s の値を書きこむと
(ファイル入出力なしの場合落ちない)
落ちないのですが、何が原因なのでしょうか?
お手数ですが、よろしくお願いします。
#include <stdio.h>
#include <string.h>
#define MONDAISU 10
void main ( void )
{
FILE *fin;
char s[] = "答え,2,2,1,2,1,3,2,1,2";
char tokenCopy[MONDAISU][256];
char *token = ","; /* 区切り文字はスペースとカンマ */
int i;
printf("オリジナル:\t");
printf("%s\n\n", s); /* トークンを取り出す文字列を表示 */
printf("取り出したトークン:\n");
strcpy(tokenCopy[0], strtok(s, token));
printf("%s\t", tokenCopy[0]);
for (i = 1; i < MONDAISU; i++) {
strcpy(tokenCopy[i], strtok(NULL, token));
printf("%s\t", tokenCopy[i]);
}
}
|