c - 运行c程序的linux脚本

标签 c linux bash

我试图在 linux 中运行一个脚本来运行一个 c 程序 脚本如下

#!/bin/bash
`gcc odd.c -o odd222`
`chmod +x odd222`
echo `./odd222`

而 odd.c 是

main()
{
int i;
printf("enter the no.");
scanf("%d",&i);
printf("shiv");
}

但问题是,当我运行这个脚本时,所有的 scanf 语句都被执行,然后所有的输出都显示出来......

如果我没有在 ./odd222 之前放置 echo,那么它会提示错误输入命令未找到(“输入”printf 中的第一个元素。

请帮助我

最佳答案

去掉反引号、chmod 和 echo。您需要做的就是运行 gcc,然后运行您的程序。

#!/bin/bash
gcc odd.c -o odd222
./odd222

最好只在程序编译成功后才尝试运行该程序。您可以使用 && 使其成为有条件的。

#!/bin/bash
gcc odd.c -o odd222 && ./odd222

最好修改您的 C 代码以确保立即打印输出。输出通常是行缓冲的,这意味着它只会在您写完一整行并在末尾添加换行符 \n 时显示。您需要打印换行符:

printf("enter the no.\n");

或者显式刷新输出:

printf("enter the no.");
fflush(stdout);

关于c - 运行c程序的linux脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19025763/

相关文章:

bash - 使用 grep 查找文件并在编辑器中打开

linux - "grep"二进制文件中 ascii 字符串的偏移量

c - 测试 Fortran IPC : Sending 4 MiB of data using TCP/IP is equally fast as sending 100 B

c - 由函数初始化的结构数组

linux - bash 脚本的 awk 部分无法正常工作

linux - 如果 Linux 进程失败或崩溃,自动重新启动它

c - 避免 IF ELSE 分支

c - 在 c 中标记化

linux - Spark-2.4.0 docker 构建失败

linux - 使用 cat 和 grep 打印行及其编号但同时忽略空行