Использование ввода переменных для system () - PullRequest
2 голосов
/ 03 июня 2019

Я использую исполняемый файл, созданный из 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 Ответ

1 голос
/ 03 июня 2019

Я скорее делаю это в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...