No sé si te he entendido bien... ¿Lo que quieres es saber cómo reservar memoria dinámica en variables de tipo char?
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCitar
A mí se me ocurre lo siguiente:
Podrías crear una cadena auxiliar, en la que copiaras el contenido de la cadena de caracteres que quieres contar el número de veces que aparece cada letra.
Con un bucle for anidado, vas comprobando el primer carácter con todos los demás de la cadena, y en caso de coincidir, aumentas el el contador de dicha letra en uno. Además, si coinciden, sustituyes en la cadena auxiliar dicho carácter por un espacio, para que cuando el bucle for llegue a dicho carácter no tengas que contar letras.
Espero haberme expresado bien...
Saludos.
M = (char**)malloc(num * sizeof(char*)); //Inicializamos filas
for(i = 0; i < num+1; i++) M[i] = (char*)malloc(c * sizeof(char)); //Inicializamos columnas
while((feof(fp)==0) && (c=fgetc(fp)))
#include<stdio.h>
#include<stdlib.h>
int NumeroEspaciosBlancos(FILE *fp);
void CogerPalabras(FILE *fp, int num);
int main(){
FILE *fp;
int num;
fp=fopen("prueba.dat", "r");
num=NumeroEspaciosBlancos(fp);
CogerPalabras(fp,num);
fclose(fp);
system("pause");
}
int NumeroEspaciosBlancos(FILE *fp){
char c;
int i=0 ;
while(feof(fp)==0){
c=fgetc(fp);
if(c==' ') i++;
}
rewind(fp);
return i;
}
void CogerPalabras(FILE *fp, int num){ //num es el número de espacios que tiene el fichero
char **M;
char c;
int i=0,j=0;
M=(char**)malloc((num+1)*sizeof(char*));
for(j=0;j<num+1;j++){
M[j]=(char*)malloc(20*sizeof(char));
j++;
}
i=0;
j=0;
while((feof(fp)==0) && (c=fgetc(fp))){ //EN ESTE BUCLE DEJA DE FUNCIONAR EL PROGRAMA
if(c!=' '){
M[i][j]=c;
j++;
}
if(c==' '){
i++;
j=0;
}
}
rewind(fp);
i=0;
j=0;
for(i=0;i<num;i++){
printf("\n");
for(j=0;j<20;j++){
printf("%c", M[i][j]);
}
}
}
#include <string.h>
#include <ctype.h>
#include <stdio.h>
int main(){
char cadena[256];
char letra;
int i;
printf("Introduce una cadena:\t");
gets(cadena);
int tamano=strlen(cadena);
for( i=0; i<tamano; i++){
cadena[i]=tolower(cadena[i]);
}
printf("¿Que letra quiere contar?");
scanf("%c", &letra);
int count=0;
for(j=0; j<tamano; j++){
if(cadena[j] == letra) count++;
}
printf("La letra aparece %d veces", count);
return 0;
}