سؤال

ومرحبا أريد أن تنفيذ هذا الرمز C في ملف دفعي

int i;
scanf("%d", &i);
for(int j = 0;j<i;j++)
{
  scanf("%d",&j);
  printf("%d",j);
}

وأود أن تشغيل البرنامج ج باستخدام> إعادة التوجيه في DOS بحيث يأتي الإخراج المطبوع لي في ملف. أريد أن تفعل الشيء نفسه في ملف دفعي لي حيث كنت يمكن أن يكتب شيء من هذا القبيل

 echo %variable% >> file

ولكن لا يعمل بالنسبة لي

@echo off
for %%i in (1 2 3) do (
set /p c=enter a name?
echo %%i
echo %c% >> file.txt
)

ما هو الخطأ؟

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

المحلول

وهذا لا يمكن أن تعمل منذ تحتاج التوسع متغير تأخر كما كنت في محاولة للإشارة إلى متغير تغيير في كتلة if. يمكنك محاولة ما يلي:

@echo off
setlocal enabledelayedexpansion
for %%i in (1 2 3) do (
  set /p c=enter a name? 
  echo %%i
  echo !c! >> file.txt
)

ولأن هذا من شأنه تقييم c فقط عندما يتم تشغيل التعليمات البرمجية، وليس عندما يتم تحليل الخط (في هذه الحالة بيان if كاملة).

وهناك ترجمة مباشرة من التعليمات البرمجية C صورك دفعة واحدة ربما تبدو أكثر مثل ما يلي، على الرغم من:

@echo off
set /p i=
:loop
set /p j=
echo %j%
set /a j+=1
if %j% LSS %i% goto loop

ويمكنك إضافة المطالبات إذا أردت، على الرغم من أن برنامج C لا يكون لهم إما :). والآن هل يمكن أن أنبوب إخراج البرنامج دفعة ككل أو مجرد إضافة >> file هناك لحسن التدبير.

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