Como atribuir uma string a uma variável ?

,

Olá !

Estou iniciando em programação e tenho o seguinte código:

int main(int argc, char *argv[]) {
	
	int matrizCampeonato[10][5];
	int time;
	int coluna;
	int pontuacao;
	char x[];
	
	
	for(time = 0; time < 10; time++){
		for(coluna = 0; coluna < 5; coluna++){
			
			if(coluna == 0){
				x = "vitorias";
				pontuacao = 3;
			}
			if(coluna == 1){
				x = "empates";
				pontuacao = 1;
			}
			if(coluna == 2){
				x = "derrotas";
				pontuacao = 0;
			}
			while(coluna < 3){
				printf("Informe o total de %c", x[]);
				scanf("%d", &matrizCampeonato[time][coluna];
				matrizCampeonato[time][3] = matrizCampeonato[time][3] + matrizCampeonato[time][coluna] * pontuação;	
			}
			
			if(coluna == 3){
				printf("\nTotal de pontos = %d\n", matrizCampeonato[time][coluna]);
			}
			
			if(coluna == 4){
				printf("Informe o saldo de gols: ");
				scanf("%d", &matrizCampeonato[time][coluna]);
			}
		}
	}

Em "Informe o total de %c eu queria que ele colocasse a palavra de acordo com a iteração do laço…Quando for a primeira execução apareceria vitória, depois empate, depois derrota.

Então gostaria que o programa lê-se a variável x.

Com certeza a forma que está ai não é a certa.

Como devo fazer?

Oi Lucas!

Usa a função strcpy para atribuir valores para variáveis string:

http://www.cplusplus.com/reference/cstring/strcpy/

Uma outra dica: cria sempre variáveis string definindo um tamanho (do jeito que você está criando a variavel x, sem informar o tamanho da matriz, poderá acessar áreas inválidas de memória e causar um Access Violation).

Existem formas de definir o tamanho da string depois, usando alocação dinâmica de memória, mas ai é outra coisa :wink:

Mais uma coisa: %c é usado para exibir na tela apenas um caractere. Acredito que o que você precisa seja %s que exibe uma string até encontrar um \0.

Boa sorte, e bem-vindo!

Aurimenes

strings em C são arrays de chars com um caracter a mais no final.

a semantica de um array é diferente de um ponteiro em certos aspectos. vc não simplesmente atribui valores a uma “string”. vc pode inicializar tipo

char x[]= “vitorias”;

isso automagicamente aloca um array de 8+1 posições. porem vc nao pode fazer depois

x = qqcoisa

por conta de como C aloca memoria na heap/stack.

o que vc faz

  1. vc pode estimar o tamanho maximo da string + usar strcpy
  2. vc pode usar um array de arrays

char mensagens[][9] = { “vitorias”, “empates”, “derrotas”} ;

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

char mensagens[][9] = { "vitorias", "empates", "derrotas"} ;

int main(){
   int i;
   for(i=0; i< 3;i++) {
     printf("m[%d] = %s\n",i,mensagens[i]);
   }
   return 0;
}

e por ai vai

Pô, muito obrigado pessoal, valeu mesmo pela ajuda.