Я новичок в кодировании, так что я мог бы сделать несколько ошибок ладьи ie тут и там. Мы получили эту задачу в школе, и цель состоит в том, чтобы отсортировать самое длинное слово и напечатать его вместе с количеством символов в нем. Я дошел до этого далеко, но отсюда и дальше мне трудно найти, в чем проблема. Программа застревает на итерациях 49,50,51 и 59 раз большую часть времени. Я думаю, это потому, что reallo c возвращает NULL для переменной longestWord.
Есть идеи, где искать, чтобы решить эти проблемы? Заранее спасибо, ребята!
Ввод:
abc
abcde
abcdefghij
abcdefghij
abcdefghijklmnopq
abcdefghijklmnopq
abcdefghijklmnop
auf wiedersehen
Ожидаемый вывод:
17 characters in longest word: abcdefghijklmnopq
Мой код пока:
#include <stdio.h>
#include <stdlib.h>
//_________//
FILE* fptr;
int c;
int iteration=0; //Just to keep track
//___________Main____________//
int main()
{
fptr = fopen("C:\\....\\input", "r");
char *s;
char *longestWord;
int i=1, charCount=0;
s = (char*) malloc (sizeof(char));
longestWord = (char*) malloc (sizeof(char));
while((c=fgetc(fptr)) != EOF){
iteration++;
printf("Iteration %d\n",iteration);
if (isalpha(c)!=0 ){
s=realloc(s,i*sizeof(char));
s[i]=c;
i++;
}
else if(c==' ' || c =='\n'){
if(i>charCount){
charCount=i-1;
longestWord=realloc(longestWord,i*sizeof(char));
while(longestWord == NULL){
longestWord=realloc(longestWord,i*sizeof(char));
}
for(int t=0;t<i;t++){
*(longestWord+t)=*(s+t);
}
i=1;
}
else{
printf("*********Checkpoint 3***************\n"); //Checkpoint 3
i=1;
}
}
else{
printf("\n\n********Error, got to the else section of the program********\n\n");
}
}
printf("%d characters in the longest word: %s\n",charCount, longestWord);
free(s);
free(longestWord);
fclose(fptr);
return 0;
} //_____________END OF MAIN____________ //