fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define N 20
  6.  
  7. int my_isspace(char c) {
  8. return (c == ' ' || c == ',' || c == '.' || c == '\n');
  9. }
  10.  
  11. int read_word(FILE *fp,char buf[N]){
  12. int i=0;
  13. for(i=0;i<N;i++){
  14. buf[i] = '\0';
  15. }
  16.  
  17. char c;
  18. while (c = fgetc(fp), c != EOF && my_isspace(c))
  19. ;
  20. if (c == EOF)
  21. return 0;
  22. buf[0] = c;
  23. i = 1;
  24. while(((c = fgetc(fp)) != EOF) && i < N - 1) {
  25. buf[i] = c;
  26. if(my_isspace(c)){
  27. buf[i] = '\0';
  28. break;
  29. }
  30. i++;
  31. }
  32. if (c == EOF) {
  33. buf[i] = '\0';
  34. }
  35. if (i == N - 1) {
  36. ungetc(c, fp);
  37. buf[N - 1] = '\0';
  38. }
  39. return i;
  40. }
  41.  
  42. #define M 400
  43. int main() {
  44. char buf[N];
  45. FILE *fp;
  46. char *word[M];
  47.  
  48. fp = fopen("anne_short.txt","r");
  49. if(fp == NULL){
  50. printf("File read error!\n");
  51. exit(1);
  52. }
  53. int i;
  54. for (i = 0; i < M; i++) {
  55. char *p;
  56. int n = read_word(fp, buf);
  57. if (n == 0)
  58. break;
  59. if ((p = malloc(n + 1)) == 0) {
  60. printf("memory full, aborted.\n");
  61. exit(1);
  62. }
  63. strcpy(p, buf);
  64. word[i] = p;
  65. }
  66. word[i] = 0;
  67. for (i = 0; word[i] != 0; i++)
  68. printf("%s\n", word[i]);
  69. printf("i = %d\n", i);
  70.  
  71. fclose(fp);
  72. return 0;
  73. }
  74. /* end */
  75.  
Runtime error #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
File read error!