Ваш лог c для определения, является ли символ гласным или символ правильным, но есть проблема с обработкой файла и нулевого символа.
Измените функцию readFile, как показано ниже:
char *readFile() {
FILE* fp = fopen("character.txt","r");
char str1[20];
char* buffer = (char*)malloc(sizeof(char)*50);
int i;
fgets(buffer,50,fp);
/* fscanf(fp,"%s",buffer);
for ( i = 0; i < 6;i++) {
fscanf(fp,"%s",str1);
strcat(buffer,str1);
strcat(buffer," ");
}
*/ fclose(fp);
return buffer;
}
И в основном, после l oop, добавьте нулевой символ в конце строки гласных и cons, как показано ниже.
int main(void) {
char *buff = readFile();
char *vowels = (char*)malloc(sizeof(char)*18);
char *cons = (char*)malloc(sizeof(char)*30);
int i;
printf("strlen = %d\n",strlen(buff));
for (i = 0; i < strlen(buff); i++) {
if (isVowel(buff[i])) {
printf("buffer inspect : %c\n",buff[i]);
vowels[vowelIndex] = buff[i];
vowelIndex++;
} else {
cons[consIndex] = buff[i];
consIndex++;
}
}
vowels[vowelIndex] = '\0';
cons[consIndex] = '\0';
printf("\nVowels : %s\n",vowels);
printf("\nCons : %s\n",cons);
writeFile("vowels.txt",vowels); // writing to the file
writeFile("consonant.txt",cons); // writing to the file:
return 0;
}