C عبر الإنترنت - IDE ومحرر ومترجم ومفسّر

اكتب برامج C وترجمها وشغّلها عبر الإنترنت بمترجم Clang حقيقي يعمل داخل متصفحك. يدعم stdin والتحذيرات ومكتبة C القياسية.

C17 (Clang 21, WebAssembly) · يعمل في متصفحك، لذا لا تصل شيفرتك إلى خوادمنا أبدًا.
main.cC
المخرجات

            
المُدخلات (stdin)، تُقرأ بواسطة scanf / std::cin / getline
Ctrl/⌘ + Enter للتشغيل

ميزات مترجم C عبر الإنترنت (بيئة تطوير ومحرّر ومفسّر)

اكتب شيفرة C وشغّلها واختبرها عبر الإنترنت مجانًا. تعمل هذه الصفحة كبيئة تطوير C ومحرّر شيفرة ومترجم ومفسّر في آن واحد: اكتب شيفرتك، واضغط «تشغيل»، وشاهد المخرجات فورًا. كل شيء يعمل في متصفحك، دون أي تثبيت ودون إنشاء حساب.

  • تشغيل الشيفرة فورًا: C17 (Clang 21, WebAssembly)، مع ظهور المخرجات في أقل من ثانية بعد التحميل الأول.
  • محرّر الشيفرة: تلوين الصياغة، وأرقام الأسطر، ومطابقة الأقواس، والإغلاق التلقائي للأقواس.
  • مُدخلات البرنامج (stdin): اكتب المُدخلات التي يقرؤها برنامجك قبل تشغيله.
  • أخطاء واضحة: تظهر رسائل الخطأ والتحذيرات في لوحة المخرجات، كما تظهر على حاسوبك.
  • ملء الشاشة: Ctrl/⌘ + Shift + F، وحجم خط قابل للتعديل، وتخطيط متجاور أو مكدّس، ولوحات قابلة لتغيير الحجم.
  • الحفظ التلقائي: تُحفظ شيفرتك في متصفحك؛ نزّلها باسم main.c أو انسخها بنقرة واحدة.
  • تجربة آمنة: حدّ زمني وزر إيقاف ينهيان الحلقات اللانهائية.
  • خاص: تعمل بيئة تشغيل C على جهازك، لذا لا تُرفع شيفرتك أبدًا.
  • الوضع الداكن واختصارات لوحة المفاتيح: Ctrl/⌘ + Enter يشغّل الشيفرة.
  • مجاني: بدون تسجيل، وبلا حدود للاستخدام.

تعلّم لغات برمجة أخرى

كيف تستخدم مترجم C عبر الإنترنت

  1. اكتب برنامج C أو الصقه في المحرر، على أن يحتوي على الدالة main. ويعيد زر إعادة ضبط المثال البرنامج التمهيدي.
  2. إذا كان البرنامج يقرأ مدخلات باستخدام scanf أو getchar أو fgets، فاكتبها في مربع المُدخلات (stdin) أسفل المخرجات قبل التشغيل.
  3. اضغط تشغيل أو استخدم Ctrl + Enter (⌘ + Enter على Mac). تُترجَم الشيفرة أولًا ثم تُنفَّذ، وتُعرض نتيجة الخطوتين في لوحة المخرجات.
  4. اختر الحدّ الزمني: 5 أو 15 أو 60 ثانية. تُوقَف الحلقة اللانهائية عند انتهاء المهلة، ويُنهي زر إيقاف التشغيل فورًا.

في التشغيل الأول يُنزَّل المترجم، وحجمه نحو 30 MB. يحتفظ به متصفحك في ذاكرته المؤقتة، وبعد ذلك يُترجَم البرنامج المعتاد في أقل من ثانية بكثير. استخدم نسخ أو main.c لحفظ ملف الشيفرة المصدرية، وA− وA+ لتغيير حجم النص، وزر التخطيط لوضع المحرر والمخرجات جنبًا إلى جنب أو أحدهما فوق الآخر، وملء الشاشة (Ctrl/⌘ + Shift + F، وEsc للخروج) لمساحة أكبر.

تتم الترجمة والتنفيذ كلاهما داخل متصفحك. لا تُرسَل شيفرتك إلى أي خادم أبدًا. ويحفظ المحرر آخر برنامج كتبته في التخزين المحلي لمتصفحك، ولا يحفظه في أي مكان آخر.

كيف يعمل المترجم وما الذي يدعمه؟

هذا مترجم حقيقي، وليس مفسّرًا يحاكي لغة C. تشغّل الصفحة Clang/LLVM 21، وهو نفسه مترجَم إلى WebAssembly بواسطة مشروع YoWASP. يحوّل Clang الملف main.c إلى برنامج WebAssembly (WASI) يشغّله متصفحك بعد ذلك. وخيارات المترجم هي:

clang main.c -std=c17 -O2 -Wall -lm -o main.wasm
  • C17 مع تفعيل التحسين (-O2) والتحذيرات الشائعة (-Wall).
  • مكتبة C القياسية من wasi-libc: stdio.h وstdlib.h وstring.h وctype.h وstdint.h وtime.h وغيرها. ومكتبة الرياضيات مربوطة، لذا تعمل sqrt وpow وsin من math.h دون أن تضيف -lm بنفسك.
  • رسائل تشخيص دقيقة: تُعرض الأخطاء والتحذيرات كما يطبعها Clang، مع مواضعها بصيغة main.c:line:column.
  • رموز الخروج: إذا أعادت main قيمة غير 0، تنتهي المخرجات بعبارة انتهت العملية بالرمز N.

قيود بيئة المتصفح المعزولة:

  • لا خيوط تنفيذ (threads). المكتبة pthread.h غير متاحة.
  • لا مقابس (sockets) ولا وصول إلى الشبكة، ولا fork أو exec.
  • لا نظام ملفات حقيقي. لا يمكنك فتح ملفات على حاسوبك، فاستخدم stdin أو بيانات داخل الشيفرة المصدرية بدلًا من ذلك.
  • لا مكتبات رسوميات أو واجهات رسومية مثل SDL أو OpenGL أو conio.h/graphics.h. المخرجات نص عادي.

أخطاء شائعة في C يساعدك المترجم على اكتشافها

تحقّق مما تُعيده scanf. فهي تُعيد عدد القيم التي قرأتها، لا القيمة نفسها. وإذا كان مربع stdin فارغًا أو يحتوي نصًا حيث يُتوقع رقم، يحتفظ المتغير بأي قيمة كانت فيه من قبل، وقد تكون قيمة عشوائية لا معنى لها. ويُظهر البرنامج التمهيدي الطريقة الآمنة:

int n;
if (scanf("%d", &n) != 1) {
    fprintf(stderr, "expected a number\n");
    return 1;               /* reported as exit code 1 */
}

طابِق محدِّدات التنسيق في printf مع أنواعها. استخدم %d لـint، و%ld لـlong، و%lld لـlong long، و%zu لـsize_t، و%f لـdouble، و%c للحرف. ومع -Wall يحذّرك Clang من عدم التطابق، مثل طباعة double باستخدام %d، فاقرأ التحذيرات حتى لو اشتغل البرنامج.

انتبه إلى تجاوز سعة الأعداد الصحيحة. يتوقف int ذو 32 بت عند 2,147,483,647، وتجاوز السعة في الأعداد ذات الإشارة سلوك غير معرَّف في C. ومع -O2 قد يفترض المحسِّن أن ذلك لا يحدث أبدًا، فتتصرف الحلقة التي تتجاوز السعة تصرفًا غريبًا بدلًا من أن تلتفّ القيمة ببساطة. استخدم long long (أو int64_t من stdint.h) للمضروبات والمجاميع والنواتج الكبيرة.

long long f = 1;
for (int i = 2; i <= 20; i++) f *= i;
printf("20! = %lld\n", f);   /* 2432902008176640000 */
نصيحة: الرسالة التي تتحدث عن تصريح ضمني (implicit declaration) لدالة تعني عادةً نقص سطر #include، مثل stdlib.h لـmalloc أو string.h لـstrlen.

الأسئلة الشائعة

ما المترجم ومعيار C المستخدمان هنا؟

Clang 21 (LLVM) في وضع C17، مع -O2 -Wall. وتُترجَم معظم الشيفرات المكتوبة لـGCC دون تعديل، ما دامت تلتزم بلغة C القياسية وتتجنب ملفات الترويسة الخاصة بمنصة معيّنة.

هل تُرفع شيفرتي إلى أي مكان؟

لا. المترجم نفسه يعمل داخل متصفحك، لذا تبقى الشيفرة المصدرية والبرنامج المترجَم ومخرجاته كلها على جهازك.

كيف أعطي برنامجي مدخلات؟

اكتبها في مربع stdin قبل الضغط على «تشغيل». ويمكن الفصل بين القيم بمسافات أو بأسطر جديدة، تمامًا كما تكتبها في الطرفية. وعند نفاد المدخلات، تُعيد scanf القيمة EOF.

لماذا يتوقف برنامجي برسالة عن انتهاء الحدّ الزمني؟

لأنه استغرق وقتًا أطول من المهلة المختارة، وهذا يشير عادةً إلى حلقة لا تنتهي. راجع شرط الحلقة، أو اختر 60 s للعمليات الحسابية الطويلة فعلًا.

هل يمكنني ترجمة C++ هنا؟

استخدم مترجم C++ عبر الإنترنت، الذي يشغّل Clang نفسه في وضع C++20. وللغات الأخرى، اطّلع على جميع المترجمات البرمجية عبر الإنترنت.

آخر تحديث

تم النسخ إلى الحافظة