I'm trying to count the number of words in a file with strtok().
/*
* code.c
*
* WHAT
* Use strtok() to count the number of words in a file.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STRMAX 128
int main() {
/* Declarations */
FILE* fptr;
int iCntr = 0;
char sLine[STRMAX];
char* cPToken;
/* Read file */
/* Error handler */
if ((fptr = fopen("/home/ubuntu/Dropbox/Unief/C/H18/Opdr01/Debug/test.txt", "r")) == NULL) {
printf("Couldn't read test.txt.\n");
exit(0);
} else {
while (fgets(sLine, STRMAX-1, fptr) != NULL) { /* Read line */
while ((cPToken = strtok(sLine, ".,; !?\r\n")) != NULL) { /* Split into words */
iCntr++;
}
}
printf("Number of words: %d\n", iCntr);
}
/* Always clean up your mess */
fclose(fptr);
return 0;
}
This causes an infinite loop. Why?
fgets(sLine, STRMAX, fptr)
notSTRMAX-1
– Warthog