次のようにフォーマットしている都市のリストがあります。
{town, ...},
{...},
...
各町を読んで構築し、町1、町2、....を作成する問題は、出力すると、1行目は{町、...}が機能しますが、2行目はクラッシュします。理由はありますか?
[地域] [町] (Excel テーブル) があります。
したがって、各地域は、その中にある町の数だけ繰り返されます。各ファイルには、1 行に 1 つの地域/町があります。
judete には、各領域が 1 回繰り返されます。
AB
SD
PC
....
orase には町のリストが含まれています。
town1
town2
....
orase-index には各町の地域が含まれています
AB
AB
AB
AB
SD
SD
SD
PC
PC
...
この {"town1", "town2", ...} のような出力が必要で、各行 (5 行目) には同じ行 (5 行目) の judete の地域に属する町が含まれています。
これが私のコードです:
#include<stdio.h>
#include<string.h>
char judet[100][100];
char orase[50][900000];
char oras[100], ceva[100];
void main ()
{
int i=0, nr;
FILE *judete, *index, *ORASE, *output;
judete = fopen("judete.txt", "rt");
index = fopen("orase-index.txt", "rt");
ORASE = fopen("orase.txt", "rt");
output = fopen("output.txt", "wt");
while( !feof(judete) )
{
fgets(judet[i], 100, judete);
i++;
}
nr = i;
char tmp[100];
int where=0;
for(i=0;i<nr;i++)
strcpy(orase[i],"");
while( !feof(index) )
{
fgets(tmp, 100, index);
for(i=0;i<nr;i++)
{
if( strstr(judet[i], tmp) )
{
fgets(oras, 100, ORASE);
strcat(ceva, "\"");
oras[strlen(oras)-1]='\0';
strcat(ceva, oras);
strcat(ceva, "\", ");
strcat(orase[i], ceva);
break;
}
}
}
char out[900000];
for(i=0;i<nr;i++)
{
strcpy(out, "");
strcat(out, "{");
strcat(out, orase[i]); //fails here
fprintf(output, "%s},\n", out);
}
}
コードを実行した結果は次のとおりです。
orase-judete.exe の 0x00D4F7A9 (msvcr110d.dll) で未処理の例外: 0xC0000005: アクセス違反書き込み場所 0x00A90000。