#include <stdio.h>
#include <string.h>
#define FILENAME "test.txt"

int main(void){
FILE *fin, *fout1, *fout2;
char pat[16], buf[1024], *p;
fin = fopen(FILENAME, "r");
fout1 = fopen("temp.txt", "w");
fout2 = fopen("damelist.txt", "a");
printf("番号 >");
fgets(pat, sizeof pat, stdin);
(p=strchr(pat, '\n'))?(*p = '\0'):(pat[15] = '\0');
while (fgets(buf, sizeof buf, fin) != NULL){
if ((p=strstr(buf, pat)) != NULL){
fputs(buf, fout2);
} else {
fputs(buf,fout1);
}
}
fclose(fin);
fclose(fout1);
fclose(fout2);
remove(FILENAME);
rename("temp.txt",FILENAME);

return 0;
}
ちょっと違うが、こんな感じか。(エラーチェックもしてない。)