Jump to content
guilhoto

fazer uma lista de strings

Recommended Posts

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?

Edited by pmg
GeSHi

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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");

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!

Share this post


Link to post
Share on other 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 :)

Share this post


Link to post
Share on other sites
AJBM

Boas!

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

Share this post


Link to post
Share on other 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 */

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!

Share this post


Link to post
Share on other sites
AJBM

No teu ultimo caso o 100 serve para alguma coisa?

eu fiz o que tu fiz isto %[^n] e funcionou na mesma

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • 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.