manipulação de strings (Linguagem C)

6 respostas
C

Se eu posso fazer isso:

char str[10]; gets(str);

Pq não posso fazer isso?

char *str; gets(str);

6 Respostas

ViniGodoy

O primeiro código reserva espaço para 10 caracteres.

O segundo não. Só cria um ponteiro selvagem, apontado sabe-se lá para que região da memória.

ViniGodoy

Além disso, lembre-se do nosso amigo cache de strings literais. Isso aqui também é um erro:

char* str = "Blibloblu"; gets(str); //A área apontada por str é read-only.

C

Hmm… então o erro está em querer usar uma memória não alocada previamente, né? :?

Pensei que o C pudesse receber minha string, alocá-la e depois apontar meu ponteiro para ela :cry:

ViniGodoy

Nessas horas a simplicidade do C é mesmo irritante.

E

cake:
Hmm… então o erro está em querer usar uma memória não alocada previamente, né? :?

Pensei que o C pudesse receber minha string, alocá-la e depois apontar meu ponteiro para ela :cry:

C não faz nada “automaticamente”. Ele é igual àquela americana que recebe você em um intercâmbio para estudantes: só dá a cama e o chuveiro. O resto você tem de se arranjar - você tem de limpar seu quarto e lavar sua roupa, e ai de você se deixar a toalha molhada em cima da cama.

Andre_Rosa

Haha, é isso aí. Só uma observação, cuidado ao usar gets(). Pesquise por fgets().

Criado 22 de novembro de 2010
Ultima resposta 22 de nov. de 2010
Respostas 6
Participantes 4