我在用C编写程序时遇到了一个奇怪的错误。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include "defs.h"
int main (int argc, char* argv[])
{
int boardSize = atoi(argv[2]);
int generations = atoi(argv[4]);
int gamesort = atoi(argv[1]);
printf("2 is %d 1 is %d 4 is %d name of file is %s \n",boardSize,gamesort,generations,argv[3]);
if (1==1)
{
printf("yes");
ZeroPlayersGame(boardSize, generations,argv[3]);
}
else//(gamesort==2)
{
TwoPlayersGame(boardSize, generations,argv[3]);
}
return 0;
}
以下是从终端获取的错误:
ise@ubuntu:~/Desktop$ make
gcc -c main.c defs.c gameIO.c zeroPlayer.c twoPlayer.c
gcc gameIO.o defs.o zeroPlayer.o main.o twoPlayer.o -o prog
ise@ubuntu:~/Desktop$ ./prog 1 2 "l.txt" 3
2 is 2 1 is 1 4 is 3 name of file is l.txt
Segmentation fault (core dumped)
很奇怪,因为你可以看到我的程序没有输入我的第一个“if”, 但是你可以看到它在if语句之前打印了这行。
感谢您的帮助!
答案 0 :(得分:2)
我认为您的问题与您的问题标题无关&#34;运营商==无法在C&#34;中工作。正如您的输出中所见,printf运行良好,可能存在功能问题&#34; ZeroPlayersGame&#34;和&#34; TwoPlayersGame&#34;。如果您向我们提供了有关这两个功能的更多信息,那么解决问题会更容易。 另外,使用&#34; 1 == 1&#34;在逻辑陈述中是如此奇怪。为什么不排除它并在printf语句之后写下你的语句。因为&#34; 1 == 1&#34;总是如此。