2009-03-23 12 views
2

HI je veux mettre en œuvre ce code C dans le fichier batchfichier batch équivalent pour ce code

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

Je courrais le programme C en utilisant> redirection DOS afin que la sortie imprimée vient à moi dans un fichier. Je veux faire la même chose dans mon fichier batch où je pourrais écrire quelque chose comme

echo %variable% >> file 

mais il ne fonctionne pas pour moi

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

ce qui est faux?

+0

Êtes-vous _sure_ que vous voulez lire dans la variable j, et imprimer l'adresse de j? Votre boucle peut se comporter bizarrement, et vous imprimerez toujours la même chose ... –

Répondre

4

Cela ne fonctionne pas car vous avez besoin d'une extension de variable retardée lorsque vous essayez de faire référence à une variable changeante dans le bloc if. Vous pouvez essayer ce qui suit:

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

car cela évaluerait c que lorsque le code est exécuté, pas quand la ligne (dans ce cas, la déclaration if complète) est analysée.

Une simple traduction de votre code C en batch ressemblerait probablement plus comme ce qui suit, bien que:

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

Vous pouvez ajouter des invites si vous voulez, bien que le programme C ne les avait pas non plus :) . Et maintenant vous pouvez canaliser la sortie du programme batch dans son ensemble ou simplement ajouter un >> file là pour faire bonne mesure.

+0

J'ai changé la solution voulue je m'attendais. Je veux effectuer printf ("% d", j); pas & j. Pouvez-vous me dire maintenant. –

+0

Alors ce code fait déjà ce que vous voulez. J'ai mal lu l'ancien code comme printf ("% i", j) avant, donc j'ai implémenté en conséquence. Hey, même mes variables sont nommées pareil. Pour autant que je sache, mes fichiers batch font la même chose que le programme C. – Joey

Questions connexes