اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

سأفترض أنك تعرف رقم السطر الذي تريد حذفه وهو موجود في متغير باسم delete_line وأن الملف الذي تريد حذف السطر منه موجود في fileptr1 وستكون النتيجة في fileptr2 (ملفnew.txt )، ففي هذه الحالة يمكنك استخدام حلقة التكرار while للدوران حول الحروف في الملف ونسخ الحروف إلى الملف الجديد ما عدا الحروف الموجودة في السطر الذي تريد حذفه:

    FILE *fileptr1, *fileptr2;
    char filename[40];
    char ch;
    int temp = 1;
    fileptr2 = fopen("new.txt", "w");
    ch = getc(fileptr1);
    while (ch != EOF)
    {
        ch = getc(fileptr1);
        if (ch == '\n')
        {
            temp++;
        }
        if (temp != delete_line)
        {
            putc(ch, fileptr2);
        }
    }

 

  • 0
نشر

جرب الكود التالي:

#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" ); }

حيث سيقوم السكريبت بما يلي:

ستقوم بادخال نص السطر المبحوث عنه.

يفتح السكريبت الملف النصي، ويقوم بالبحث عن السطر المبحوث عنه سطراً سطراً.

هناك احتمالين عند تصفح كل سطر:

  1. عدم توافق السطر الحالي مع السطر المبحوث عنه: في هذه الحالة سيتم نسخ السطر الحالي في ملف آخر output.txt
  2. في حال توافق السطر الحالي مع السطر المبحوث عنه سيتم تجاوز هذه المرحلة دون نسخ السطر في الملف الجديد.

يغلف الملفين معا input.txt وَ الملف المحصل عليه output.txt

تغيير اسم output;txt إلى input.txt وبالتي نحصل على ملف خالي من السطر المبحوث عنه والمُراد حذفه.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...