Daniel, é possível sim. Como estamos utilizando o comando "system"
que é responsável por executar alguma instrução na linha comando, podemos passar esse parâmetro(string) do C para o Python também através do "system"
.
Para isso, iremos utilizar um recurso chamado sys.argv
no Python, responsável por pegar os parâmetros que passamos na execução do arquivo python. Muita informação? Calma, no exemplo ficará mais claro hahaha
No código em C abaixo, pedimos o usuário para digitar uma frase e após isso, concatenamos essa frase com o comando de execução de um arquivo em python, por exemplo: "python arquivo.py ola mundo"
, onde a string "ola mundo"
é passada para o programa Python como argumento. Veja como fica em código (observe os comentários):
Aquivo.c
#include <stdio.h>
int main(){
char frase[50];
char comandoCompleto[100];
printf("Executando um programa Python dentro de um arquivo C.\n");
printf("Digite uma frase: \n");
scanf("%[^\n]", frase); // Para pegar uma frase com espaços
snprintf(comandoCompleto, 100, "python arquivo.py %s", frase); // concatena a frase recebida com o comando para executar o arquivo python
system(comandoCompleto); // executa o arquivo python
return 0;
}
Aquivo.py
import sys
print("\nArquivo Python - Frase recebida do arquivo em C")
for arg in sys.argv[1:]: # começa do valor 1 para retirar o nome do arquivo e pegar apenas os parâmetros passados
print(arg, end=" ")
Resultado:
Vale lembrar que dessa forma que te mostrei tanto na primeira resposta quanto na de agora, estamos utilizando o comando "system"
da linguagem C, que é responsável por executar instruções na linha de comando, ou seja, estamos utilizando a linguagem C apenas como intermediária para executar por baixo dos panos alguma instrução da linha de comando que irá executar o programa em Python.
Também adiciono aqui algumas leituras sobre o assunto:
Qualquer dúvida estou por aqui, tá bom?
Grande abraço!