我正在使用C编写的可执行文件,并且试图将R中的变量传递给它。
C代码:
#include <stdio.h>
#include <stdlib.h>
int sumUp(int x, int y, int z, int *sum);
int main()
{
int x1,x2,x3;
int total = 0;
scanf("%d %d %d",&x1,&x2,&x3);
sumUp(x1,x2,x3,&total);
printf("Your total is :%d\n", total);
system("pause");
}
int sumUp(int x, int y, int z, int *sum)
{
*sum = x + y + z;
}
这是我的R代码:
x <- 0
y <- 0
z <- 0
readint <-function(){
a <- readline(prompt = "Enter a number: \n")
}
x <- as.numeric(readint())
y <- as.numeric(readint())
z <- as.numeric(readint())
system("Practice.exe", intern = TRUE,input = "x y z")
当我为input
使用变量时遇到问题,因为它将打印不正确的值。但是,当我使用直接输入时,例如input = "1 2 3"
,我会得到正确的答案。我检查了变量的类型,它们似乎是正确的。以下是供参考的输出:
在R和C之间是否发生了一些不可思议的事情,或者我在system
上做错了什么?即使改变x,y,z
的值,我也会得到84
。因此,我想这里有些东西正在丢失。我尝试使用args
代替input
,但是遇到了同样的问题,除了无论输入什么,变量还是直接输入它都给出了126
的值。感谢您的任何帮助,谢谢。
答案 0 :(得分:1)
我宁愿在C语言中这样做:
#include <stdio.h>
#include <stdlib.h>
int sumUp(int x, int y, int z, int *sum);
int main()
{
int x1,x2,x3;
int total = 0;
x1 = strtol(argv[1], NULL, 10);
x2 = strtol(argv[2], NULL, 10);
x3 = strtol(argv[3], NULL, 10);
sumUp(x1,x2,x3,&total);
printf("Your total is :%d\n", total);
system("pause");
}
int sumUp(int x, int y, int z, int *sum)
{
*sum = x + y + z;
}
R中的这个:
x <- 0
y <- 0
z <- 0
readint <-function(){
a <- readline(prompt = "Enter a number: \n")
}
x <- as.numeric(readint())
y <- as.numeric(readint())
z <- as.numeric(readint())
cmd <- paste("Practice.exe", x, y, z)
system(cmd, intern = TRUE)