/*
修改程序清单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;?
}