جرب الكود التالي:
#include <stdio.h>
char buffer[128]; /* عدد أحرف السطر المبحوث عنه */
FILE * in, * out;
in = fopen( "input.txt", "r" );
out = fopen( "output.txt", "w" );
if ( in == NULL || out == NULL ) { perror( "fopen" ); }
while ( ! feof( in )) {
if ( fgets( buffer, 128, in ) == NULL ) { perror( "fgets" ); }
if ( goodline( buffer )) { fputs( buffer, out ); }
}
fclose( in );
fclose( out );
if ( rename( "output.txt", "input.txt" ) != 0 ) { perror( "rename" ); }
حيث سيقوم السكريبت بما يلي:
ستقوم بادخال نص السطر المبحوث عنه.
يفتح السكريبت الملف النصي، ويقوم بالبحث عن السطر المبحوث عنه سطراً سطراً.
هناك احتمالين عند تصفح كل سطر:
عدم توافق السطر الحالي مع السطر المبحوث عنه: في هذه الحالة سيتم نسخ السطر الحالي في ملف آخر output.txt
في حال توافق السطر الحالي مع السطر المبحوث عنه سيتم تجاوز هذه المرحلة دون نسخ السطر في الملف الجديد.
يغلف الملفين معا input.txt وَ الملف المحصل عليه output.txt
تغيير اسم output;txt إلى input.txt وبالتي نحصل على ملف خالي من السطر المبحوث عنه والمُراد حذفه.