[問題] c return variable to batch(已解決)

看板Programming作者 (藍影)時間14年前 (2011/09/15 19:10), 編輯推噓0(009)
留言9則, 2人參與, 最新討論串1/1
※ [本文轉錄自 C_and_CPP 看板 #1ESTc87y ] Windows XP 這問題不知道有沒有人遇過.. 假設要寫一功能之程式(批次檔) 為輸入 a b , 算 a+....+b 一般我們在寫 batch file 時,有類似 func-like 寫法如下 :: filename : sum.bat @echo off :sum SETLOCAL ENABLEDELAYEDEXPANSION SET low=%~1 SET up=%~2 SET rst=0 FOR /L %%I IN (%low%, 1, %up%) DO ( SET /A rst+=%%I ) (ENDLOCAL SET %3=%rst% ) :: filename:main.bat @echo off :main SET rst=0 call sum.bat 1 10 rst echo 1+...+10=%rst% pause > nul 這裡要問的是,如果 main.bat 裡面,sum.bat 改成 sum.exe 的話, 有沒有辦法完成? 我想破頭還是想不出來, #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char **argv) { int i=0, rst=0; for(i=atoi(argv[1]); i<=atoi(argv[2]); ++i) rst+=i; sprintf(argv[3], "%d", rst); return 0; } 我知道這樣一定會出包,而且很嚴重, 主要是想問,C language 有沒有辦法把結果傳進 batch 裡面之環境變數裡? 目前我是用 redirection 方式, 在 c 裡面會把結果 print 出來, 用 batch 調用時, sum.exe 1 10 > log.txt , 到時再用 batch 讀 log.txt 便知結果 , 想請教是不是只有這方法可行?或還有其他方法可得到類似效果? ( 用 C 寫 application 給 batch 調用) 謝謝各位不吝指導,感激不盡! -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.78.41 ※ 編輯: tropical72 來自: 180.177.78.41 (09/15 19:11)

09/15 20:43, , 1F
1. return 0改成return rst
09/15 20:43, 1F

09/15 20:45, , 2F
然後再印出errorlevel
09/15 20:45, 2F

09/15 20:45, , 3F
2. 使用win32 api
09/15 20:45, 3F

09/15 20:45, , 4F
SetEnvironmentVariable()這個function
09/15 20:45, 4F

09/15 20:53, , 5F
這兩個方法應該最接近你原本用call的效果
09/15 20:53, 5F

09/15 20:54, , 6F
不過不曉得你的compiler
09/15 20:54, 6F

09/15 20:54, , 7F
2的方法以前在cygwin上會有點問題
09/15 20:54, 7F

09/15 21:35, , 8F
不考慮用errorlevel,因到時會用到浮點
09/15 21:35, 8F

09/15 21:35, , 9F
數,2之方法我試一下好了(vs),謝謝您!!
09/15 21:35, 9F
※ 編輯: tropical72 來自: 180.177.78.41 (09/15 22:48)
文章代碼(AID): #1ESTqhBg (Programming)
文章代碼(AID): #1ESTqhBg (Programming)