void makeNames(
int makeNum, /* 作成数 */
int wordNum, /* 単語数 */
char * const words /* 単語列の領域 */
) {
int wordPerName; /* 1名前あたりの単語数 */
char marks[] = ".-_"; /* 記号 */
char numStr[ FIG_PER_NUM_MAX + 1 ]; /* 数字列の領域 */
int i, j; /* 汎用カウンタ */
/* 乱数を初期化する */
srand( ( unsigned )time( NULL ) );
for ( i = 0; i < 10; i ++ ) {
rand();
}
/* 指定数だけ名前作成を繰り返す */
for ( i = 0; i < makeNum; i ++ ) {
printf( "%s", words + ( rand() % wordNum ) * WORD_LEN_MAX ); /* 最初の1語をランダムに決定・表示 */
wordPerName = rand() % WORD_PER_NAME_MAX + 1; /* 1名前あたりの単語数をランダムに決定 */
if ( wordPerName <= 1 ) { /* 単語数が1(以下)なら */
printf( "%s", makeRandNumStr( numStr, sizeof( numStr ) ) ); /* 数字列を後置する */
}
else {
/* 単語数が1より大きければ、さらに単語を後置していく */
for ( j = 1; j < wordPerName; j ++ ) {
if ( rand() % 2 ) { /* 挟むのは数字列か記号かをランダムに決定 */
printf( "%s", makeRandNumStr( numStr, sizeof( numStr ) ) ); /* 数字列を挟む */
}
else {
printf( "%c", marks[ rand() % ( sizeof( marks ) - 1 ) ] ); /* 記号を挟む(-1 は終端文字を除外するため) */
}
printf( "%s", words + ( rand() % wordNum ) * WORD_LEN_MAX ); /* 後置する1語をランダムに決定・表示 */
}
}
printf( "\n" ); /* 1名前ごとに改行する */
}
}
void makeNames(char *const address,int wordNum,char *const words)
{
char marks[] = "._-";
char numStr[FIG_PER_NUM_MAX + 1];
char *return_address;
char str[100];
int i,j;
int wordPerName;
return_address = address;
for(i=0; i<10; i++)
{
rand();
}
//printf("%s",words + (rand() % wordNum) * WORD_LEN_MAX);
strcat(return_address,words + (rand() % wordNum) * WORD_LEN_MAX);
wordPerName = rand() % WORD_PER_NAME_MAX + 1;
if(wordPerName <= 1)
{
strcat(return_address,makeRandNumStr(numStr,sizeof(numStr)));
//printf("%s",makeRandNumStr(numStr,sizeof(numStr)));
}
else
{
for(j=1; j<wordPerName; j++)
{
if(rand() % 2)
{
strcat(return_address,makeRandNumStr(numStr,sizeof(numStr)));
//printf("%s",makeRandNumStr(numStr,sizeof(numStr)));
}
else
{
strcat(return_address,marks[rand() % (sizeof(marks) -1)]);
//printf("%c",marks[rand() % (sizeof(marks) -1)]);
}
strcat(return_address,words + (rand() % wordNum) * WORD_LEN_MAX);
//printf("%s",words + (rand() % wordNum) * WORD_LEN_MAX);
}
}
strcat(return_address,"\0");
//printf("\n");
}
makeNames( makeNum, wordNum, words );
[編集後の呼び出し]
srand((unsigned)time(NULL));
while(1)
{
address = NULL;
makeNames(address,wordNum,words);
printf("%s\n",address);
getch();
}
やりたいことは、拾い物の関数だと関数内でprintfを使用し表示していますが、
それを呼び出し側(main関数)で表示(引数で文字列をやりとり)させたいです。
コンパイルはエラーなく通るのですが、実行すると
http://gyazo.com/0f47e9602eaf17f62a9948a749c5a91e
このようなエラーウィンドウが表示されます。
なにかおかしいでしょうか?