对system()使用变量输入

时间:2019-06-03 16:38:39

标签: r

我正在使用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的值。感谢您的任何帮助,谢谢。

1 个答案:

答案 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)