String Com Valor Indefinido? [RESOLVIDO]

1. String Com Valor Indefinido? [RESOLVIDO]

Lucas
~lujjc4

(usa Ubuntu)

Enviado em 06/01/2012 - 09:24h

Hiho forumeiros (;
Minha duvida de hoje é a seguinte
como faço para declarar uma string sem determinar um valor?

Ex: char string [10];
Ao invez de usar o "10" deixar totalmente disponivel para receber caracters a vontade.. tanto 1 quanto 1.000 ..

estou usando esse code:

# include <stdio.h>
# include <string.h>
#define strsize 10
int main()
{
char str1 [5][strsize], str2[];/* Como colocar valor indefinido em str2? */
int x,size;
for (x=0;x<5;x++)
{

REFAZ: printf ("\nEntre com uma string ate 5 caracters: ");
gets (str2);
size=strlen (str2);/*strlen conta com operador nulo */
if (size > 6) goto REFAZ; /* retorna a pergunta caso seja ultrapassada */
fgets (str1[x], strsize, stdin);
}
for (x=0;x<5;x++)
{
printf ("String: %s\n", str1[x]);
}
system ("PAUSE>>NULL");
return 0;
}


Em relação a esse codigo, se o tamanho maximo perminito para cada posição da string for de 5 caracters e o usuario informar "8" por exemplo.. ela ira preencher os 5 caracters e os 3 restantes irá preencher na posição seguinte.. portanto como não estou conseguindo "cortar" com o fgets estou fazendo um teste caso o usuario informe mais que o permitido o programa descartar o valor informado e refazer a pergunta.. se alguem poder me ajudar agradeço!

Thanks (;



  


2. Re: String Com Valor Indefinido? [RESOLVIDO]

Lucas
~lujjc4

(usa Ubuntu)

Enviado em 06/01/2012 - 09:27h

creio que se eu conseguir declarar uma string com valor indefinido resolverei esse problema.. mas se alguem desejar acrescentar e me mostrar outra forma ou codigo, vai ser bastante útil para min

valeu guys! (;


3. Re: String Com Valor Indefinido? [RESOLVIDO]

Lucas
~lujjc4

(usa Ubuntu)

Enviado em 09/01/2012 - 09:29h

Nada? :/


4. Re: String Com Valor Indefinido? [RESOLVIDO]

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 10/01/2012 - 11:53h

O que você quer é um ponteiro.


char *str;
int n = 4096;

str = (char *) malloc ( n * sizeof(char));



Em str, você poderá colocar até 4096 caracteres, e esses valores podem ser modificados por usuários:



scanf ( "%d", &n );

str = (char *) malloc ( n * sizeof(char));

scanf ( "%[^\n]", str );



É isso que você quer?

Atenciosamente,
Enzo Ferber
[]'s


5. Re: String Com Valor Indefinido? [RESOLVIDO]

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 10/01/2012 - 12:05h

Código:

/* str.c
* Enzo Ferber : <enzo@veloxmail.com.br>
* jan 2012
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

/*
* Se estiver no windows, descomente as linhas a seguir!
*/
/*

#include <stdio_ext.h>
#define fflush __fpurge

*/

void clearbuffer ( )
{
fflush(stdin);
}

int main ( void )
{
int n;
char *str;

/*
* Entrada de dados para o tamanho máxima da string
*/
printf ( "# Digite o tamanho da string: ");
clearbuffer( ); scanf ( "%d", &n );

/*
* Alocação de memória!
*
* (n + 1) significa o tamanho que o usuário quer, mais o caractere NULO no
* final da string.
*/
if ( !(str = (char *) malloc ( (n + 1) * sizeof(char))))
{
printf ( "# Erro ao alocar memória!\n" );
exit ( EXIT_FAILURE );
}

/*
* Entrada de dados para a string
*/
printf ( "# Digite uma string[%d]: ", n );
clearbuffer( ); scanf ("%[^\n]", str );

/*
* Impressão dos dados
*/

printf ( "\n\n" );
printf ( "# Tamanho Máxima : %d\n", n );
printf ( "# Tamanho da String: %d\n", strlen(str));
printf ( "# String digitada : %s\n", str );

/*
* Desaloca a memória.
*/

free ( str );
return 0;
}




Output:

# Digite o tamanho da string: 50
# Digite uma string[50]: Enzo de Brito Ferber


# Tamanho Mßxima : 50
# Tamanho da String: 20
# String digitada : Enzo de Brito Ferber


Qualquer coisa, posta denovo!
[]'s






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts