Domanda

HI Voglio realizzare questo codice C nel file batch

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

Vorrei eseguire il programma c utilizzando> reindirizzamento in DOS in modo che l'output di stampa viene a me in un file. Io voglio fare la stessa cosa nel mio file batch dove ho potuto scrivere qualcosa di simile

 echo %variable% >> file

, ma non funziona per me

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

ciò che è sbagliato?

È stato utile?

Soluzione

Non può lavorare in quanto è necessario espansione ritardata delle variabili come si tenta di fare riferimento a una variabile che cambia nel if blocco. Si può provare il seguente:

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

in quanto ciò valutare c solo quando viene eseguito il codice, non quando la linea (in questo caso la dichiarazione >> file completo) viene analizzato.

Una semplice traduzione del codice C in lotti sarebbe probabilmente più simile a quanto segue, anche se:

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

È possibile aggiungere istruzioni, se volete, anche se il programma C non ha avuto loro neanche :). E ora si può inviare l'output del programma batch nel suo insieme o semplicemente aggiungere un <=> in là per buona misura.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top