Ir para o conteúdo
guilhoto

fazer uma lista de strings

Mensagens Recomendadas

guilhoto

bom dia.

gostava de saber como guardo uma string uma lista...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main(){
      char coise[101], nomes[1000];
      long int num_socio[1000], meses[1000], credito[1000], nModalidades[1000], i=0,j=0, numero_socio=101;
      while(coise[0]!='x'){
                    scanf(" %[^\n]", &coise);
                    if(coise[0]=='r'){
                                       coise[0]=' ';
                                       num_socio[i]=numero_socio;
                                       meses[i]=0;
                                       credito[i]=0;
                                       nModalidades[i]=0;
                                       numero_socio++;
                                       nomes[i]=coise;
                                       i++;
                                       }
                                       }
      while(j<i){
                 printf("%d %s %d %d %d ", num_socio[j], nomes[i], meses[j], credito[j], nModalidades[j]);
                 j++;
                 }                                  
      system("pause");
}

queria fazer dos nomes uma lista e guardar a string que obtenho do coise...na posicao 0 queria guardar o 1º nome, posicao 1 o 2º nome etc...

alguem me podia ajudar?

Editado por pmg
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Hint: A primeira posição do array coise pode levar um caracter.

Não podes meter uma string no espaço dum caracter.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
guilhoto

entao como e que posso fazr para guardar o conjunto de nomes. sim eu sei, eu meti que o coise[0]=' ' porque o utilizador mete por exemplo r Fernando Lopes e eu so quero guardar o Fernando Lopes. nao sei e como hei-de guardar os nomes numa organizados...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Crias um array em cada elemento é um array de caracteres (uma string)

char coise[101][49]; /* espaço para 101 strings, cada uma das quais pode ter até 48 caracteres e o '\0' */
strcpy(coise[0], "Fernando Lopes");
strcpy(coise[1], "guilhoto");
/* ... */
strcpy(coise[100], "Zulmira");

Editado por pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
guilhoto

mas sera o utilizador a pedir os nomes...eu nao sei os nomes...

ja consegui, meti com o scanf...tal como disseste coise[1000][101] (quero que tenha no maximo 100 caracteres :)) e o scanf guardava o que o utilizador punha no coise com i a começar em 0...

muito obrigado :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Por exemplo se o nome fosse Fernando Lopes com o scanf só guardavas, Fernando, aconselho te a usar o fgets()

O conselho é bom, aliás é óptimo!

Mas guardar só o "Fernando" depende da conversão usada.

Supondo que o input tem " FERNANDO LOPES <ENTER>" (tres espacos no meio da string) acontece isto:

char nome[101];
scanf("%s", nome); /* nome fica com "FERNANDO", o input fica com " LOPES <ENTER>" à espera */
scanf("%7c", nome); /* nome fica com " FERNAN" sem o '\0', o input fica com "DO LOPES <ENTER>" à espera */
scanf("%7s", nome); /* nome fica com "FERNAN", o input fica com "DO LOPES <ENTER>" à espera */
scanf("%100[^\n]", nome); /* nome fica com " FERNANDO LOPES ", o input fica com <ENTER> à espera */
scanf(" %100[^\n]", nome); /* nome fica com "FERNANDO LOPES ", o input fica com <ENTER> à espera */

Editado por pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

No teu ultimo caso o 100 serve para alguma coisa?

Sim!

O teu array tem espaço para strings até um máximo de 100 caracteres.

Se o utilizador "adormecer" em cima do teclado e escrever "FERNNNNNNNNNNNNNNNNNNNNNNNNNNN ... <mais de 100 letras> ... NNNNNNNNNNNNNNNNNNNNNNNNNNNNN<ENTER>" (ou se quiser causar "buffer overflow") o scanf() nao limita a escrita ao tamanho disponível. Com o 100, já limita e impede o buffer overflow.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

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.