Я пытаюсь передать имя текстового файла двум различным функциям, чтобы они могли работать с файлом отдельно. Первый l oop работает нормально и дает ожидаемый результат, но вторая функция застревает в бесконечном l oop. Вот основная функция:
#include <stdio.h>
#include <stdlib.h>
int countCharacters(const char *nameOfFile);
int countWords(const char *nameOfFile);
int main()
{
int characterCount = 0;
int wordCount = 0;
char fileName[100];
printf("Enter the name of the text file: ");
scanf("%s",fileName);
characterCount = countCharacters(fileName);
wordCount = countWords(fileName);
printf("Characters:%d \n",characterCount );
printf("Words:%d \n",wordCount);
return 0;
}
Это первая функция:
#include <stdio.h>
#include <stdlib.h>
int countCharacters(const char *nameOfFile)
{
char currentCharacter;
int numCharacter = 0;
FILE *fpt;
fpt = fopen(nameOfFile,"r");
while( (currentCharacter = fgetc(fpt)) != EOF )
{
if(currentCharacter != ' ' && currentCharacter != '\n')
numCharacter++;
}
fclose(nameOfFile);
return numCharacter;
}
И это вторая функция:
#include <stdio.h>
#include <stdlib.h>
int countWords(const char *nameOfFile)
{
char currentCharacter;
int numWord = 0;
FILE *fpt;
fpt = fopen(nameOfFile,"r");
while( (currentCharacter = fgetc(fpt)) != EOF )
{
if(currentCharacter == ' ' || currentCharacter == '\n')
numWord++;
}
fclose(nameOfFile);
return numWord;
}
Итак, мой вопрос как C обрабатывает имя файла, который был передан двум различным функциям, и что я должен делать, чтобы предотвратить возникновение таких бесконечных циклов, когда я хочу использовать имя текстового файла более чем в одном функция? Я удостоверился, что fpt указывал на начало текстового файла, когда он был открыт в обоих случаях, и я не вижу, в чем проблема с l oop, чтобы пройти через файл, так как оба имеют идентичные условия.