Jump to content

fazer uma lista de strings


guilhoto

Recommended Posts

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?

Edited by pmg
GeSHi
Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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");
Edited by 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!

Link to comment
Share on other sites

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 */
Edited by 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!

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.