作者ryannork (下雨天)
看板java
标题[JSP ] readline时会停住的问题…
时间Sun Jul 17 15:45:56 2011
<%
if(solStateNum == 0){
String WA_check[] = {"cmd","/c","D:\\"+solNumber[1]+".exe"};
try{
Process pro = runtime.exec(WA_check);
BufferedWriter WA_In = new BufferedWriter(
new OutputStreamWriter(pro.getOutputStream()));
BufferedReader WA_Out = new BufferedReader(
new InputStreamReader(pro.getInputStream()));
FileWriter errorWriter = new FileWriter(
"D:\\"+solNumber[1]+".txt",true);
%>
<sql:query var="test">
Select * From test_point Where qNum = ?
<sql:param value="${param.qNum}"/>
</sql:query>
<c:forEach var="test" items="${test.rows}">
<c:set var="input" scope="request" value="${test.testInput}"/>
<c:set var="output" scope="request" value="${test.testOutput}"/>
<%
String input = (String)request.getAttribute("input");
String output = (String)request.getAttribute("output");
WA_In.write(input);
WA_In.flush();
if((line = WA_Out.readLine()) != null){
if(!line.equals(output)){ //输出资料比对
errorWriter.write("Your answer is : "+line);
errorWriter.write("The correct answer is : "
+output);
solStateNum = 3;
}
}
%>
</c:forEach>
<%
errorWriter.close();
WA_In.close();
WA_Out.close();
pro.destroy();
}
catch (Exception e) {
e.printStackTrace();
runtime.exit(0);
}
}
%>
这是我的部份程式
目的是要做由gcc编译完後得到的exe档,开启并输入值,
然後再比对输出是否和正确答案一样
编译的c程式如下
#include<stdio.h>
int main() {
char s[9999];
while( scanf("%s",s)!=EOF ) {
printf("hello, %s\n",s);
}
return 0;
}
我是用if(true)return;的方式得知在readline时停住了(就是网页跑很久都没有结果)
却一直不明白为何…
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.125.57.131
1F:→ calais007:我猜你的input不存在CR/LF,你可以印每个byte出来看看 07/19 15:19
2F:→ calais007:你可以看看最後有没有0D或是0A这两个byte 07/19 15:21
3F:→ ryannork:我用getbytes("UTF-8")得到 [B@1e3a0ec 这值次出来都不一 07/20 10:48
4F:→ ryannork:之前也试过WA_in(input+"\r\n")但是结果是一样的 = = 07/20 10:52
5F:→ calais007:那就不要用readLine,看你来是最後没有od和oa所以卡住了 07/20 14:31
6F:→ calais007:打错,是0d或0a 07/20 14:32
7F:→ ryannork:不好意思,那请问可以用什麽代替? 07/20 17:46