سؤال

في cmd.exe، يمكنني تنفيذ الأمر "copy c:\hello.txt c:\hello2.txt" وكان يعمل بشكل جيد.لكن في برنامج C الخاص بي، قمت بتشغيل هذا الجزء من التعليمات البرمجية وحصلت على الخطأ التالي:

#include <iostream>

using namespace std;

int main()
{
    system("copy c:\hello.txt c:\hello2.txt");
    system("pause");

    return 0;
}

انتاج:لا يمكن للنظام العثور على الملف المحدد.

هل يعرف أحد ما الذي يحدث هنا؟

هل كانت مفيدة؟

المحلول

داخل سلاسل C (وعدد لا بأس به من اللغات الأخرى التي تستخدم نفس قواعد الهروب)، \ يجب ان يكون \\ لأنها شخصية الهروب.يسمح لك بإدخال أحرف غير قابلة للطباعة في النص العادي مثل:

  • حرف علامة التبويب \t.
  • حرف العودة \r.
  • حرف السطر الجديد \n.
  • وغيرها والتي لن أغطيها بالتفصيل.

منذ \ يستخدم كحرف الهروب، ونحن بحاجة إلى وسيلة لوضع فِعلي '\' في سلسلة.ويتم ذلك مع التسلسل \\.

لذلك يجب أن يكون خطك:

system("copy c:\\hello.txt c:\\hello2.txt");

قد يؤدي هذا أحيانًا إلى أخطاء غامضة باستخدام أوامر مثل:

FILE *fh = fopen ("c:\text.dat", "w");

أين ال \t هو في الواقع tab الحرف والملف الذي تحاول فتحه هو:

            ج:فاتورة غير مدفوعةهسر.دأر.

نصائح أخرى

وبدلا من ذلك، فإن جميع وظائف ويندوز تدعم مائلة على غرار يونكس

system("copy c:/hello.txt c:/hello2.txt");

وبعض الناس يفضلون هذا لأنه من الأسهل على الفور غير مألوف '\'.
ولكن قد يربك مستخدمي ويندوز إذا قمت بعرض هذا المسار في رسالة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top