У меня возникли некоторые проблемы с массивом строк, которые, кажется, занимают зарезервированное пространство памяти. Код слишком велик для размещения здесь, поэтому я опубликую важную часть ниже:
int main ( ){
int i = 0, j = 0, k = 0, count = 0, numLinhas = 0, l = 0;
char string[100][100];
char line [17];
char str[4];
char str1[5];
char str2[4];
char str3[4];
FILE *p;
p = fopen("text.txt", "r");
while(fgets(line, sizeof line, p)!=NULL){
printf("%s", line);
strncpy(string[i], line, 17);
i++;
numLinhas++;
}
fclose(p);
char *temp[numLinhas];
После этого он входит в цикл, в котором сохраняет в string [i]
значение оператора, содержащегося в файле. Начало for и три примера приведены ниже:
for (i = 0; i<numLinhas; i++){
sscanf( string[i], "%s %s %s %s" ,str1, str,str2, str3);
if(str[0]=='0' && str[1] == '0' && str[2]!= 'd') {
temp[i] = "NOP";
count++;
}
if(str[0]=='0'&& str[1] == '6' && str[2]!= 'd') {
sprintf(temp[i],"%s,%s" , "MVI B", str2);
count = count+2;
}
if(str[0]=='0'&& str[1] == '7' && str[2]!= 'd') {
temp[i] = "RLC";
count++;
}
Ошибка случайная - это не всегда происходит. И это обычно происходит, когда есть вызов sprintf.
О да! Ниже приведен txt-файл, который я загружаю в качестве примера:
0000 21a 11r 00r
0003 7Ea
0004 21a 12r 00r
0007 46a
0008 80a
0009 21a 13r 00r
000C 77a
000D 3Ea 01a
000F 3Da
0010 76a
0011 0Ad
0012 03d
0013 01d
Просто увидел что-то новое. вот окно компиляции, которое я получаю:
marcos@john:~/Desktop$ ./paraler
0000 21a 11r 00rValor de l: 16
Valor de l: 1
0003 7Ea
Valor de l: 9
0004 21a 12r 00rValor de l: 16
Valor de l: 1
0007 46a
Valor de l: 9
0008 80a
Valor de l: 9
0009 21a 13r 00rValor de l: 16
Valor de l: 1
000C 77a
Valor de l: 9
000D 3Ea 01a
Valor de l: 13
000F 3Da
Valor de l: 9
0010 76a
Valor de l: 9
0011 0Ad
Valor de l: 9
0012 03d
Valor de l: 9
0013 01d
Valor de l: 9
string:0000 21a 11r 00r
string:
string:0003 7Ea
string:0004 21a 12r 00r
string:
string:0007 46a
string:0008 80a
string:0009 21a 13r 00r
string:
string:000C 77a
string:000D 3Ea 01a
string:000F 3Da
string:0010 76a
string:0011 0Ad
string:0012 03d
string:0013 01d
Segmentation fault
Странно, что я получаю несколько пустых мест в массиве строк ... Это как-то связано с ошибкой?