Como declarar Cray C de Strings
Pergunta
Estou trabalhando em um programa Lex simples para a aula e, nele, estou criando uma tabela de símbolos muito rudimentares, apenas uma variedade de cordas com uma varredura linear para pesquisa. Eu declarei como:
char* identifiers[100];
E eu estou usando assim:
found = false;
for (i = 0; i < seen_identifiers; i++) {
if (!strcmp(identifiers[i], yytext)) {
printf("Identifier \"%s\" already in symbol table", yytext);
found = true;
break;
}
}
if (!found) {
printf("identifier: %s\n", yytext);
seen_identifiers++;
identifiers[seen_identifiers] = yytext;
}
No entanto, eu sempre recebo um segfault na chamada STRCMP. Tenho certeza de que estraguei algo super simples.
Solução
seen_identifiers++;
identifiers[seen_identifiers] = yytext;
Se seen_identifiers
começa em 0, você nunca atribui a identifiers[0]
e então o strcmp
falhará.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow