/*
修改程序清单13.3 中的程序,从1开始,根据加入列表的顺序为每个单词编号。当程序下次运行
时,确保新的单词编号接着上次的编号开始。
*/
//13.11-8.exe c 13.11-8.txt 13.11-8-1.txt 13.11-8-2.txt
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 41
int get_row(char *file_name) ;
int main(void)
{
FILE *fp;
char words[MAX];
int row;
row = get_row("wordy");
if ((fp = fopen("wordy", "a+")) == NULL)
{
fprintf(stdout,"Can't open \"wordy\" file.\n");
exit(EXIT_FAILURE);
}
puts("Enter words to add to the file; press the #");
puts("key at the beginning of a line to terminate.");
while ((fscanf(stdin,"%40s", words) == 1) && (words[0] != '#'))
fprintf(fp, "%d-%s\n",row++, words);
puts("File contents:");
rewind(fp); /* go back to beginning of file */
while (fscanf(fp,"%s",words) == 1)
puts(words);
puts("Done!");
if (fclose(fp) != 0)
fprintf(stderr,"Error closing file\n");
return 0;
}
int get_row(char *file_name)
{
FILE *fp;
int i=1;
char ch;
fp = fopen(file_name, "r");
rewind(fp);
while ((ch = getc(fp)) != EOF)
{
if (ch == '\n')
i++;
}
fclose(fp);
return i;
}