Não sei se alguém consegue me ajudar nessa, ou está tendo o mesmo problema.
Depois que eu guardo uma string de tamanho 12 (nem 11, nem 13, exatamente 12) e só quando eu faço a 1a consulta a essa string depois de tê-la guardado, alguma alma do além insere um caractere '^Q' no final dessa string.
Isso tá ferrando meu programa pois faz com que se criem vários vértices para uma mesma string (na hora de comparar, "minhasdefs.h" != "minhasdefs.h^Q").
De novo: isso só acontece com strings de tamanho 12.
Se alguém tiver alguma idéia de por que isso tá acontecendo, qualquer que seja, ajudaria muito.
Obrigado.
Quando vc aloca o vetor, verifique se há espaço pro '\0' do final da string.
Comigo aconteceu a mesma coisa... só não me pergunte pq raios só não funciona pra 12 =D
Comigo aconteceu a mesma coisa... só não me pergunte pq raios só não funciona pra 12 =D
Vc deve estar estourando vetores ou com os mallocs errados!
Os mallocs estavam ok, só dava pau pra strings de tamanhos 12 (10, 11, 13, 14 funciona direito...).
Mas é isso mesmo, eu mudei a alocação pra algo do tipo:
nome[v] = (char*)malloc((strlen(buff) + 1) * sizeof(char));
E funcionou!
Sei lá, o 12 deve ter algum significado cabalístico em ansi C
Obrigado, Marcela e Natan.
Mas é isso mesmo, eu mudei a alocação pra algo do tipo:
nome[v] = (char*)malloc((strlen(buff) + 1) * sizeof(char));
E funcionou!
Sei lá, o 12 deve ter algum significado cabalístico em ansi C
Obrigado, Marcela e Natan.
"Mas é isso mesmo, eu mudei a alocação pra algo do tipo:"
Então os mallocs não estavam ok.. =P
Sempre que acontece erros místicos em C é culpa de acessos errados na memória!
Então os mallocs não estavam ok.. =P
Sempre que acontece erros místicos em C é culpa de acessos errados na memória!
O strlen devolve qual o tamanho da palavra, mas não conta o \0, como vc precisa do espaço para o \0 você realmente tem que somar 1.
12 não tem algum significado cabalístico em ansi C além do acesso a uma posição inválida da memória. Pode parecer estranho que com 13 funcione, mas existe uma estrutura por trás.
Note que não há segfault porque você não saiu da memória do programa.
12 não tem algum significado cabalístico em ansi C além do acesso a uma posição inválida da memória. Pode parecer estranho que com 13 funcione, mas existe uma estrutura por trás.
Note que não há segfault porque você não saiu da memória do programa.