Muchas gracias, por su buena buena onda y comentarios, ha sido muy lindo leerlos, pero miren esto es lo que llevo
LA IDEA QUE EL PROGRAMA EN UN ARCHIVO DE TEXTO TENGO 200 PALABRAS ESCRIBAS CORRECTAMENTE Y EN OTRO ARCHIVO DE TEXTO TENGO 150 PALABRAS MAL ESCRITAS Y BIEN ESCRITAS Y QUE ESTE ME CORRIJA LAS PALABRAS MAL ESCRITAS.
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#include <conio.h>
char pbueno[300];
char pmalo[300];
void deletrearcorre(char[], char[]);//deletrear letra por letra
int noletra(char c);// caracter que no correspondfa
void remover(char pmalo[]);// remover puntuaciones ,.
void mayuscula( char pmalo[]);// mayuscula
void minusculabueno( char pbueno[]); //parecido
int largomalo( char pmalo[]);//medir palabra delñ articulo
void nextpmaloWord(char pmalo[], char pmaloWord[], int pmaloLength, char dictionaryWord[], char pbueno[]);
int main(void) {
FILE* palabras;//llamo los textos el bueno y el malo
FILE* palabras2;
int bytes_read;
char* p;
char* z;
char caracter, caracter2;
char mat1[300][40], mat2[300][40];
palabras = fopen("palabras.txt", "r");
if (palabras == 0) {
printf("no se puede abrir archivo \"palabras.txt\"\n");
return -1;
}
palabras2 = fopen("palabras2.txt", "r");
if (palabras2 == 0) {
printf("no se puede abrir archivo \"palabras2.txt\"\n");
return -1;
}
/* leo el diccionario */
z = pbueno;
printf(" palabras bien escritas \n\n");
printf("%s", z);
z = fgets(z, 1000, palabras);
printf("%s", z);
while (z != 0) {
z = fgets(z, 1000, palabras);
printf("%s", z);
while (*z != '\0') {
z += 1;
}
z = fgets(z, 1000, palabras);
}
/* read pmalo */
p = pmalo;
bytes_read = fread(p, 1, 1000, palabras2);
printf("\n palabras mal escritas \n");
printf("%s", p);
p += bytes_read;
while (bytes_read != 0) {
bytes_read = fread(p, 1, 1000, palabras2);
p += bytes_read;
}
*p = 0;
deletrearcorre(pmalo, pbueno);
}
int pmaloPosition =0; //posisicoon la palanbra del articulo
int dictionaryPosition = 0;
void deletrearcorre(char pmalo[], char pbueno[]) {
char pmaloWord[50];
char dictionaryWord[50];
int pmaloLength = largomalo(pmalo);
remover(pmalo);
mayuscula(pmalo);
minusculabueno(pbueno);
nextpmaloWord(pmalo, pmaloWord, pmaloLength, dictionaryWord, pbueno);
}
void nextDictionaryWord(char pbueno[], char dictionaryWord[]){
int i;
for(i =0; pbueno[dictionaryPosition] != '\n'; i++){
dictionaryWord = pbueno[dictionaryPosition];
dictionaryPosition++;
}
}
int noletra(char c){
if ( (c>='a'&&c<='z') || (c>='A'&&c<='Z'))
return 1;
return 0;
}
void remover(char pmalo[]){
int i, j=0;
for ( i =0; pmalo != 0; i++){
if (noletra(pmalo)){
pmalo[j] = pmalo;
j++;
}
else if (!noletra(pmalo)){
pmalo[j] = ' ';
j++;
}
}
}
void mayuscula( char pmalo[]){
int i=0;
for( i; pmalo != 0; i++){
if ( pmalo >= 'A' && pmalo <='Z')
pmalo = pmalo + 32;
}
}
void minusculabueno( char pbueno[]){
int i=0;
for(i; pbueno != 0; i++){
if (pbueno >= 'A' && pbueno <= 'Z'){
pbueno = pbueno + 32;
}
}
}
int largomalo( char pmalo[] ){
int count=0;
while (pmalo[count] != 0)
count++;
return count;
}
void nextpmaloWord(char pmalo[], char pmaloWord[], int pmaloLength, char dictionaryWord[], char pbueno[]){
int j, i;
comienzo:
while(!noletra(pmalo[pmaloPosition])){
if (pmalo[pmaloPosition] == 0){
return;
}
pmaloPosition++;
}
for(j=0; pmalo[pmaloPosition] != ' ' || pmaloPosition == pmaloLength; j++){
pmaloWord[j] = pmalo[pmaloPosition];
pmaloPosition++;
}
if (strlen(pmaloWord)<2){
goto comienzo;
}
pmaloWord[j+1] = 0;
//dictionary search
while (!strncmp(pmaloWord, dictionaryWord,strlen(pmaloWord))){
nextDictionaryWord(pbueno, dictionaryWord);
}
if(strncmp(pmaloWord, dictionaryWord,strlen(pmaloWord)))
printf(pmaloWord);
}