Separar string em C

c4l1m3r0

Power Member
Ora viva techzonianos! Estou agora a fazer o projecto final de programação em C para o meu curso no tecnico e já o tenho quase totalmente acabado. Excepto um erro que está a dar cabo de tudo, embora o resto pareca estar a funcionar bem. Após 4 horas à procura dele, descobri que não estou a conseguir passar correctamente a string que é colocada pelo utilizador para uma matriz de elementos que só podem ser 1 ou 0.
O projecto no seu todo é para imitar o Jogo da Vida, um autómato celular, em que basicamente as celulas duma matriz morrem (0=morte) ou vivem (1=vida).
Por questão de pratica (e tambem porque montei uma GUI toda bonita :joker:), convem que o input seja feito algo no genero:

1111111111100000000000001111111
1111110000000000111111110000000
... etc.

Portanto, a string é gravada com o input do utilizador, depois é convertida, caracter a caracter, para integer. Estava a usar simplesmente uma coisa neste genero:

x[j]=atoi(&linha[j]);

Já tentei resolver o problema de varias maneiras, mas não consigo chegar la.
Alguma sugestão? :001:
 
Portanto, a string é gravada com o input do utilizador, depois é convertida, caracter a caracter, para integer. Estava a usar simplesmente uma coisa neste genero:

x[j]=atoi(&linha[j]);


linha[j] contém uma string?
Se não, não podes fazer isso (usar atoi num char). atoi aplica-se a uma string. Para o que tu queres, podes usar a tabela ASCII.
Para obteres o int correspondente ao char, basta subtrair '0' ao char.
Ex: Passar de '1' -> 1
'1' = 49
'0' = 48

'1' - '0' = 49-48 = 1

O mesmo se aplica ao zero: '0' - '0' = 0
 
Pois eu tambem pensava isso, fui enganado por um tutorial (devo ter lido mal, provavelmente) que li que dizia que o & permitia ler o caracter apenas. Hoje é que descobri que o que faz é ler a string a partir dai.

Mas essa da tabela ASCII parece que faz o trabalho, muitissimo obrigado Baderous!
 
Back
Topo