char s1[]="Hello";
char s2[]="World";
strcat(s1,s2);
Объявления переменных выделяют память для 5 символов каждый плюс завершающий байт NUL. Ваш вызов strcat
записывает за этот пробел, что приводит к неопределенным результатам.
В этом случае, структура памяти, вероятно, что-то вроде этого
0 1 2 3 4 5 6 7 8 9 10 11
H e l l o \0 W o r l d \0
^ ^
s1 s2
После strcat
, результат:
0 1 2 3 4 5 6 7 8 9 10 11
H e l l o W o r l d \0 \0
^ ^
s1 s2
Что дает ты видишь. Обратите внимание, что могут быть и другие возможные результаты, программа может, например, сбой при вызове strcat
.
считав различные ответы и различные комментарии (от корреспондента), вот то, что я сделал бы
1) попробуйте этот подход Java http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ProcessBuilder.html
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory("myDir");
Process p = pb.start();
посмотрите больше об этом классе:
http://java.sun.com/developer/JDCTechTips/2005/tt0727.html#2
http://www.javabeat.net/tips/8-using-the-new-process-builder-class.html
2) попытайтесь делать это (запускающийся Firefox) от C/C ++/ruby/python и посмотрите, успешно выполняется ли это.
3) если бы все остальное перестало работать, я запустил бы программную оболочку и что программная оболочка запустила бы Firefox!!
Если можно сузить его к Java 6, можно использовать настольный API:
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/
Должен посмотреть что-то как:
if (Desktop.isDesktopSupported()) {
Desktop desktop = Desktop.getDesktop();
if (desktop.isSupported(Desktop.Action.BROWSE)) {
try {
desktop.browse(new URI("http://localhost"));
}
catch(IOException ioe) {
ioe.printStackTrace();
}
catch(URISyntaxException use) {
use.printStackTrace();
}
}
}
Используйте BrowserLauncher.
Вызов его очень легок, просто пойдите
new BrowserLauncher().openURLinBrowser("http://www.google.com");
У Вас могла бы быть лучшая удача, если Вы читаете и отображаете стандартный вывод / потоки сообщений об ошибках, таким образом, можно поймать любой Firefox сообщения об ошибке, может распечатать.