echo (shell) and C language
echo (shell) and C language
我有一个用C语言编写的程序。在这个程序中,我有一个整数变量QS。此变量的值在程序执行期间更改在这个用 C 编写的程序中,我想使用 echo 命令外壳显示这个变量 QS
我听说纸尿裤C的系统()功能让手使用终端或控制台
系统("echo $ QS")当我这样做时,变量 QS 无法识别,并且它不显示任何内容。
关于我该如何做到这一点,你有什么具体的答案吗?以及如何识别C语言中的变量?
我知道使用简单的 printf 可以显示这个变量,但我想要的是使用 echo。
提前感谢您的回答。
命令行管理程序无法访问程序变量值。您必须先将值设置到环境中。有不同的方法可以做到这一点。其中之一是(在 linux/unix 中工作)
int main()
{
char chProgramVar[] = "hello world" ;
setenv("ShellVar", chProgramVar, 1) ;
system("echo $ShellVar") ;
}
正如其他人所说,shell 无法访问您的程序变量。您可以使用 sprintf
将值插入到将使用 system
执行的命令中:
char command[BUFSIZ];
sprintf(command, "echo %d", QS);
system(command);
你用system(3)
调用生成的 shell 不知道 C 程序中的任何变量。 执行所需操作的最简单方法是将数据导出为环境变量。 由于环境是由调用 system(3)
继承的,因此您可以使用 setenv(3)
来设置变量。 但是,必须首先将其格式化为字符串:
int QS = ...;
char QSStr[32]; // Longest integer string is INT_MIN = -2147483648, assuming
// that sizeof(int) == 4
snprintf(QSStr, sizeof(QSStr), "%d", QS); // Convert to string
setenv("QS", QSStr); // Set the environment variable)
...
system("echo $QS"); // Will print the value of QS
您必须将数字格式化为字符字节。数字"4"具有与打印字符不同的整数表示形式。
使用 printf 打印数字,或使用 sprintf 将其重新格式化为字符到新的缓冲区中。然后,您可以使用系统回显打印新缓冲区(无论出于何种原因)。
char s[16]; // might be too small
sprintf(s, "%d", integer_var);
// s is the string
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- 将Windows SYSTEMTIME转换为字符串或字符buf,C++与用户的"Region and Language"格式?
- echo (shell) and C language
- 什么是"extern linkage and with C language linkage"