Ir para o conteúdo
msmsms

preencher um vetor sem lixo de memoria

Mensagens Recomendadas

msmsms

fiz o seguinte programa com intenção de receber o output "000"

mas quando faço a impressão o que recebo é 000<vario lixo de memoria>

como resolvo?

gostaria também de saber como é que posso converter no fim o str[] para um *str

nota: a variavel cont=3 tem mesmo de existir tal como está porque ela terá de ser determinada com uma função à parte

não pode ser adicionada por meio de define

#include<stdio.h>
int cont = 3;
int main(){
char str[cont];

int i;
for(i=0;i<cont;i++){
str[i] = '0';
}

//puts(str);
printf("%s\n", str);

return 0;
}

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

como as questões estão descontextualizadas, as respostas também o serão

fiz o seguinte programa com intenção de receber o output "000"

mas quando faço a impressão o que recebo é 000<vario lixo de memoria>

como resolvo?

depende

gostaria também de saber como é que posso converter no fim o str[] para um *str

com um cast

nota: a variavel cont=3 tem mesmo de existir tal como está porque ela terá de ser determinada com uma função à parte

não pode ser adicionada por meio de define

o que quer que seja essa desculpa, nunca será uma desculpa para a utilização de uma variável global


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

como as questões estão descontextualizadas, as respostas também o serão

depende

com um cast

o que quer que seja essa desculpa, nunca será uma desculpa para a utilização de uma variável global

coloquei a variavel como local mas mesmo assim ao fazer o printf apos o ciclo for obtenho lixo de memoria

estou a utilizar o linux ubuntu será disso?

eu não consigo colocar aqui os caracteres que me aparecem apos os 000, porque são como letras chinesas

se o vetor apenas tem 3 posições porque razão imprime mais do que 3 caracteres?

quando tento imprimir carácter a carácter dentro do for não obtenho lixo de memória:

> 0

> 0

> 0

$

int main(){
int cont = 3;
char str[cont];

int i;
for(i=0;i<cont;i++){
str[i] = '0';
}

//puts(str);
printf("%s\n", str);

return 0;
}

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

vamos lá ver ...

o que define uma string em C ?

uma string em C é um vetor!

não queria declarar o vetor desta forma *str porque depois vou ter de fazer concatenações a essa string onde estou a pensar usar strcat() sendo que apenas posso usar com esta função strcat() se o argumento for do tipo str[] de acordo com as experiências que fiz.

posteriormente ou em fase final precisarei da string no formato pointer para entregar como argumento a uma função que apenas aceita string em formato pointer

o meu único problema é esse lixo de memória

ao se fazer a concatenação com strcat() leva os caracteres 0 e depois leva o lixo de memória e então a string concatenada

algo assim: 000���[�s"^�ola

sendo que o output desejado seria: 000ola

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

não queria declarar o vetor desta forma *str porque depois vou ter de fazer concatenações a essa string onde estou a pensar usar strcat() sendo que apenas posso usar com esta função strcat() se o argumento for do tipo str[] de acordo com as experiências que fiz.

posteriormente ou em fase final precisarei da string no formato pointer para entregar como argumento a uma função que apenas aceita string em formato pointer

o meu único problema é esse lixo de memória

ao se fazer a concatenação com strcat() leva os caracteres 0 e depois leva o lixo de memória e então a string concatenada

algo assim: 000���[�s"^�ola

completamente irrelevante à questão colocada ...

uma string em C é um vetor!

é um vector/array, mas com uma particulariedade ... qual ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

o vetor tem de estar declarado global tal como tinha feito no inicio e o tamanho do mesmo não pode ser definido por meio de variável

caso o seja dá origem a lixo de memória mas não entendo porquê

não posso fazer o que se segue:

#include<stdio.h>
#include<string.h>
char str[100];
int main(){
int cont = 4;

int i;
for(i=0;i<cont;i++){
   str[i] = '0';
}
   strcat(str,"ola");
   printf("%s\n", str);

   return 0;
}

porque eu tenho de permitir um tamanho de vetor cujo o máximo pode ir até ao máximo que o computador permitir

como não tenho muito mais tempo vou colocar um tamanho absurdo de capacidade de vetor para tentar escapar desta

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

novamente, não respondeste à questão colocada anteriormente

podes me responder a esta

qual é o tamanho máximo de um vetor em C?

char str[99999999999999999999999999999999999999999999999999999999];

diz que é too large!

será normal?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

será normal?

eu não sei se estás a gozar ou simplesmente não sabes

no entanto. vou te dar o benefício da dúvida.

não quer dizer que me vou dar ao trabalho de responder a essa questão.

fico somente à espera que respondas à que coloquei : "uma string é um vector/array, mas com uma particulariedade ... qual ?"


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bubulindo

A string e terminada com '\0'... se definires o teu vector como 000\0 provavelmente resolve o problema...


include <ai se te avio>

Mãe () {

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.