Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom, estou com um problema, estou criando algo parecido com o excel, pois bem, estou quebrando o vetor nos locais que possuem o \t.
char matris[30][26][302]
char *ponteiro;
ponteiro = strtok(vetor, "\t");
int i,j;
for(i=0;i<k;i++){
for(j=0;j<colunas;j++){
while (ponteiro != NULL){
strcpy(matris[i][j], ponteiro);
ponteiro = strtok (NULL, " ,.-");
}
}
}
Para dar print eu fiz isso:
int w,z,y;
for(w=0;w<k;w++){
for(z=0;z<colunas;z++){
printf("%s", matris[w][z]);
}
}
Sendo que, colunas esta recebendo dinamicamente, e o K(que sao as linhas) tbm esta recebendo dinamicamente, entao ele esta correndo todos os campos.
Era pra estar dando certo, mas independente do input que fizer (dados ou int) ele printa em branco.
se eu inserir por exemplo
1 \t 1 \t 1
a quantidade de linhas é 1, e de colunas sao 3(quantidade de \t+1)
o que seria o problema?
Obrigado.
Cara, nao ta dando muito certo nao, ele nao esta aparecendo nd ainda....
como vi que vc ta atribuindo 1 ao matris na posição, tentei dessa maneira e ele printou o 1, mas com o meu codigo aparentemente nao foi.
tentei de outra maneira.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int conta(char c, char *s){
int num_vezes=0;
while(*s!='\0'){
if(*s== '\t'){
num_vezes++;
}
s++;
}
return num_vezes;
} int tamanhoVetor = (sizeof vetorDeNumeros)/(sizeof vetorDeNumeros[0]);
int i;
int j;
int temp;
for(i=0;i<tamanhoVetor;i++){
for(j=0;j<tamanhoVetor;j++){
if(vetorDeNumeros[i] < vetorDeNumeros[j]){
temp = vetorDeNumeros[i];
vetorDeNumeros[i] = vetorDeNumeros[j];
vetorDeNumeros[j] = temp;
}
}
}
return vetorDeNumeros[0];
} //int tamanho = 0;
char vetor[302];
int m;
int k=0;
int colunas = 0;
int vetorDeNumeros[2];
//localiza pelo numero maximo de coisas que ele vai ler
char matris[30][26][302];
//inicia-se o loop
while(1){
//Recebe os dados
fgets(vetor, 302, stdin);
//Verifica se tem a quebra de linha
if(strcmp(vetor, "\n") == 0){
break;
}
//Aqui eu insiro na funcao o vetor
char *s = vetor;
//Recebo a quantia de \t
m = conta('\t', s);
//Passo pra posicao do vetor, o numero de colunas
vetorDeNumeros[k] = m+1;
//Recebo o resultado do bubble sort
colunas = ordenar(vetorDeNumeros);
//faz a colocacao de cada elemento dentro de cada celula, tentei por funcao mas nao deu muito certo
char *ponteiro;
ponteiro = strtok(vetor, "\t");
int i,j;
for(i=0;i<k;i++){
for(j=0;j<colunas;j++){
while (ponteiro != NULL){
strcpy(matris[i][j], ponteiro);
ponteiro = strtok (NULL, " ,.-");
}
}
}
//Quantia de linas que foram
k++;
}
//printf("%d", colunas);
int w,z,y, tamanhoDentroMatriz = 0;
char cont[301];
for(w=0;w<k;w++){
for(z=0;z<colunas;z++){
for(y=0;y<strlen(matris[w][z]);y++){
matris[w][z][y]= cont[y];
printf("%s\n", cont);
}
}
}
return 0;
}
tem alguma outra maneira mais eficiente e mais pratica de se separar substrings? no caso dali estou usando o strtok mas estou me enrolando com ele tbm.
Continua nao aparecendo nd '-'.
Bom , olhando assim eu vejo que você so esta inicializando 2 matrizes então e bidimensional.
Uma matriz tridimensional seria algo assim.
{