يؤدي Ipconfig / all باستخدام البرمجة C إلى خطأ سطر أوامر غير مكتمل

-2

مبتدئ برمجة هنا لذا فأنا أعمل على برنامج بسيط يستخدم مدخلات المستخدم لتسمية ملف نصي ثم يقوم البرنامج بتخزين ipconfig / كافة المعلومات في هذا الملف النصي. أتلقى خطأ "سطر أوامر غير معروف أو غير مكتمل." أفهم أنه من السهل جدًا كتابة ipconfig / all إلى ملف نصي باستخدام موجه الأوامر ولكني كنت آمل في تشغيله باستخدام C.

شكرا لكم!

#include<stdlib.h>

#define MAX_LEN 20

int main()
{
    char myfile[MAX_LEN];

    printf ("Enter text file name: ");
    scanf ("%s", myfile);

    system("C:\\Windows\\System32\\ipconfig /all 2>&1 \\Location\myfile.txt");

   return 0;
}

1 إجابة

1
افضل جواب

الكثير من الأخطاء هنا

  • عدم استخدام السلسلة التي أدخلتها للتو
  • الفرار الخاطئ للشرطة المائلة للخلف
  • نسيان إعادة التوجيه في سطر الأوامر (قبل اسم الملف مباشرة). مثال: system("C:\\Windows\\System32\\ipconfig /all 2>&1 > myfile.txt")

لكن:

  • لا يجب أن تستخدم system لهذا، popen يمكن الحصول على إخراج الأمر ، لا حاجة لعمليات إعادة توجيه قبيحة
  • لا حاجة لإسكات الخطأ المعياري ، كل المخرجات المثيرة للاهتمام هي في الإخراج القياسي
  • لا حاجة لتحديد المسار للأمر إنه أمر نظام موجود بالفعل في المسار

اقتراحي باستخدام popen (الذي يفتقد بعض تدقيق الأخطاء وما هو غير ذلك ، ولكنه يعمل بشكل أساسي) والذي يعيدك إلى ماسورة. فقط اقرأه حرفًا بحرف حتى النهاية واكتب النتيجة في ملف إخراج:

#include<stdio.h>
#define MAX_LEN 20

int main()
{
    char myfile[MAX_LEN];

    printf ("Enter text file name: ");
    fflush(stdout);
    scanf ("%19s", myfile);
    FILE *f = popen("ipconfig /all","r");
    FILE *fw = fopen(myfile,"w");
    if (fw)
    {
     while(1)
     {
       int c = fgetc(f);
       if (c == EOF) break;
       fputc(c,fw);
     }
     fclose(fw);
     pclose(f);
    }

   return 0;
}
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام