我使用Vim作为我的编辑器而GCC作为我的编译器,但它不能正常工作。假设我正在制作一个基本程序来确定一个数字是奇数还是偶数。这是我的代码:
#include <stdio.h>
int main(int argc, char argv[])
{
int i;
printf("Enter a number: ");
scanf("%d\n", &i);
printf("%d\n", i);
if(i % 2 == 0)
{
printf("Your number is even.\n");
}
else if(i % 2 != 0)
{
printf("Your number is odd.\n");
}
else
{
printf("Invalid input.\n");
}
getchar();
return 0;
}
我不确定我是否编程错了,或者gcc不是一个好的编译器,或者其他什么。我正在运行linux,我用windows双启动。现在我按ctrl-d停止进程,然后才打印回我的号码,并判断它是奇数还是偶数。它不仅仅是这个,很多其他类似格式的程序似乎都是这样做的。
~ $ ./test
Enter a number: 45
45 //I press enter, nothing happends. Ctrl-d
Your number is even. //ctrl-d again
~ $
所以我要问的是,是否有一种方法可以对其进行编程,以便我不必退出程序以使其工作,或者是否有另一个编译器不能使用它。有这个问题吗?我正在运行Ubuntu 14.04双启动Windows 8.1。
答案 0 :(得分:2)
\n
格式的 scanf
表示“读取直到遇到非空白字符,然后忽略它们”。删除它并制作阅读"%d"
的格式。
答案 1 :(得分:1)
让gcc
从vim工作,
转到vim命令提示符
shell gcc <and all needed parameters>
或打开另一个命令窗口
将其设置为与正在编辑的程序相同的目录
gcc <and all needed parameters>
通常,尝试将编译步骤与链接步骤分开。 I.E.编译:
gcc -c <mySource.c> -Wall -Wextra -pedantic -std=c99 -o mySource.o
如果有任何头文件,那么除了默认的'include'路径中的头文件之外,再添加
-I<pathToHeaderFile>
通常位于同一目录中,所以:
-I.
然后链接:
gcc mySource.o -o mySource
如果您打算进行任何调试,可以将-ggdb
参数添加到这两行。
添加任何库目录然后在链接步骤追加
-L<pathToLibrary>
在任何库参数之后添加任何库然后在链接步骤附加:
-l<shortLibName>
vim
的初始化文件可以包含通过某些击键组合调用gcc
的必要信息,但我并不完全熟悉这些细节。