String - Linguagem C

2 respostas
paloma

Oi, alguém pode me dar uma ajuda, inicializei a string str com um \0, para que não fique nenhum lixo, só que está dando erro :cry:

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

int main()
{
    char str[11],str1[11],str2[11],str3[11],str4[11];
    
    printf ("Entre com a string 1: ");
    gets(str1);
    
    printf ("Entre com a string 2: ");
    gets(str2);
    
    printf ("Entre com a string 3: ");
    gets(str3);
    
    printf ("Entre com a string 4: ");
    gets(str4);
    
    str='[code]#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char str[11],str1[11],str2[11],str3[11],str4[11];
    
    printf ("Entre com a string 1: ");
    gets(str1);
    
    printf ("Entre com a string 2: ");
    gets(str2);
    
    printf ("Entre com a string 3: ");
    gets(str3);
    
    printf ("Entre com a string 4: ");
    gets(str4);
    
    str='\0'; 
    
    strcat(str,str1);
    strcat(str,str2);
    strcat(str,str3);
    strcat(str,str4);
    
    printf ("String Concatenada: %s");
    
    system("PAUSE");
    return (0);
}
'; strcat(str,str1); strcat(str,str2); strcat(str,str3); strcat(str,str4); printf ("String Concatenada: %s"); system("PAUSE"); return (0); } [/code]

2 Respostas

adrianoms

em C não sei se é exatamente a mesma coisa que java

1° String se define com “texto”(Aspas duplas), ‘t’(Aspas simples) apenas para caracter ,voce esta tentado inicializar uma String com ‘texto’(Aspas simples) deve ser esse o motivo do erro.

2° tenta assim:

str = "";

ou
assim

str = null;

essa duas sugestoes funcionão em Java

peczenyj

C nãp é como outras linguagens onde uma string é uma variavel qualquer. Em C uma string é um vetor de char, o que traz algumas complicações.

Por exemplo, isto não funciona
char nome[10];
nome = "leopoldo";
ou
char *nome;
nome = "leopoldo";
char nome[10];
nome = {'l','e','o','p','o','l','d','o','[code]char nome[10];
nome = {'l','e','o','p','o','l','d','o','\0'};
'};[/code]

porem assim, funciona:

char nome[] = "leopoldo";
ou
char nome[10] = "leopoldo";
char *nome = "leopoldo";
char nome[] =  {'l','e','o','p','o','l','d','o','[code]char nome[] =  {'l','e','o','p','o','l','d','o','\0'};
'};[/code]

Por que? por que esta é uma forma de inicializar a variavel durante a sua declaração.

Se vc quer atribuir um valor para uma string depois, tem que fazer elemento a elemento. por isso existem strcat, strcpy, sscanf, sprintf, strcmp, são funções que, internamente, trabalham para lidar com estes vetores.

por exemplo, parece tentador fazer

if (nome == "leopoldo")

entretanto nome não é uma variavel, e sim um vetor de 10 posições que precisam ser comparados 1 a 1. strcmp ja faz isso.

ja imaginaram um vetor de strings? um vetor multidimensional de strings ? ou algo como **argv? é realmente interessante vc ter este tipo de estrutura, sem falar que se vc não sabe usar, pode descobrir milhões de simbolos ascii que vc nem imaginava que existia e as mensagens de erro mais inteligiveis que ja inventaram como... broken pipe[;i] ou [i]Segmentation fault :twisted:

Assim funciona.
str[0]='[code]    str[0]='\0'; /* aqui vc informa 1 caracter, na posição 0, podes fazer quando declaras a variavel */

    strcat(str,str1);
    ...

    printf ("String Concatenada: %s\n",str);
'; /* aqui vc informa 1 caracter, na posição 0, podes fazer quando declaras a variavel */

strcat(str,str1);
...

printf ("String Concatenada: %s\n",str);
[/code]

Criado 11 de junho de 2006
Ultima resposta 11 de jun. de 2006
Respostas 2
Participantes 3