String - Linguagem C

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:

[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='[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);

}
[/code]’;

strcat(str,str1);
strcat(str,str2);
strcat(str,str3);
strcat(str,str4);

printf ("String Concatenada: %s");

system("PAUSE");
return (0);

}
[/code]

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

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… [i]broken pipe[;i] ou Segmentation fault :twisted:

Assim funciona.

[code] 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);

[/code]’; /* 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]