Moderadores: Administradores, Moderadores




Sniper PT Escreveu:Olá a todos!
Iniciei a programar em C há pouco tempo, e muitos colegas meus (e eu inclusivé) quando estão a compilar têm erros do género "core dump"... estes erros são originados por mau manuseamento com a memória.... e é aqui que me surge uma dúvida:
Como é que hei-de proceder (no código) para evitar este tipos de erros?



Passo a enunciar alguns dos equívocos do ZePinga:
1. int foo = 30;
char bar[foo];
bar = "foobar";
Esta sequência de instruções é perfeitamente válida e o que elas fazem é declarar-te um array de caracteres com 30 posições em que as posições iniciais estão preenchidas por 'f' 'o' 'o' 'b' 'a' 'r' '\0'. *PODES* utilizar uma varíavel no tamanho do array a criar - o tamanho desse array será o valor da variável, neste caso 30, e não o endereço.
Não ligues ao que o ZePinga te disse pois dali só saíram uma série de barbaridades. Fico abismado como um aluno do IST diz tanta coisa errada, ainda por cima para ajudar alguém que está somente a começar. O estrago que seria na vida do Sniper se eu não estivesse aqui... Enfim... ZePinga, talvez sejas do curso de Quimíca e como tal a tua falta de conhecimentos sobre a C seja compreensível - com o devido respeito a todos os Químicos que percebem bastante de programação.

int b = 6;
char str[b];
strcpy(str,"moron");
OmegaSquid Escreveu:ZePinga percebes tanto de C como eu de contraplacados:
- Código: Seleccionar todos
int b = 6;
char str[b];
strcpy(str,"moron");
Printa o vector e vê o impossivel...
Cya



OmegaSquid Escreveu:ZePinga percebes tanto de C como eu de contraplacados:
- Código: Seleccionar todos
int b = 6;
char str[b];
strcpy(str,"moron");
Printa o vector e vê o impossivel...
Cya
OmegaSquid Escreveu:Bem, tu deves tar parvo só pode... int b=6; eh que? run time?! vai plantar nabos... nao pera... enterra-te... ups... ou será que já te enterraste?
Nota-se mm que deves ter estudado pelo lamas, aquele livro eh a maior treta que ha pra C...
tho tudo dito...
hasta
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main() {
int b = 6;
char str[b];
strcpy(str,"moron");
printf("%s\n", str);
return 1;
}

jcorreia Escreveu:Se tivesses lido o parágrafo seguinte do link que deste... Ora lê:
"It's forbidden because the value of x is unknown when the program is compiled; it's a run-time, not a compile-time, value."
No exemplo que usei:
int foo = 30;
char bar[foo];
A variável foo é... constante... em tempo de... compilação... TCHARAN! Pelo menos até ser declarado o array bar. O valor de foo quando bar é declarado é conhecido quando compilares o programa. Acho que não discordas disso.
1º exemplo:
#include <stdio.h>
int main() {
int c = 30;
char vec[c];
vec[0] = 'a';
vec[1] ='b';
vec[2] = '\0';
printf("inicializei o vector\n");
printf("%s",vec);
}

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante