أي ما يعادل ملف دفعي لهذا الرمز
-
21-08-2019 - |
سؤال
ومرحبا أريد أن تنفيذ هذا الرمز 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
هناك لحسن التدبير.