我有一个我正在格式化的城市列表:
{town, ...},
{...},
...
读取和构建每个城镇并创建 town1, town2,.... 工作问题是当我输出它时,第一行工作 {town, ...},但第二行崩溃。知道为什么吗?
我有 [地区] [城镇](excel 表)。
因此,每个地区都会重复其中有多少个城镇。每个文件每行有 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。