我想从终端获取用户输入,然后从终端获取该输入并写入新文件。
在这里我使用usage[]
来显示我的C程序的语法
文件如下:
http://pastee.co/VP10OH
#include "common.h"
/* system headers */
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include "bio.h"
/* interface headers */
#include "vmath.h"
#include "nmg.h"
#include "rtgeom.h"
#include "bu.h"
#include "raytrace.h"
#include "wdb.h"
static const char usage[] = "Usage: %s Camera x1 y1 z1 look_at x2 y2 z2 Light x3 y3 z3 -o output_file brlcad_db.g object(s)\n";
int main( int argc, char *argv[] )
{
bu_setprogname(argv[0]);
int c;
while ((c = getopt(argc, argv, "ClL")) != -1)
{
switch (c)
{
case "C":
printf("camera{<%s", argv[1], ",", argv[2], ",", argv[3], ">}");
break;
case "l":
printf("camera{%s", argv[4], ",", argv[5], ",", argv[6], "}");
break;
case "L":
printf("light {%s", argv[7], ",", argv[8], ",", argv[9], "}");
break;
case 'o': /* Output file name */
/* grab output file name */
break;
default:
bu_exit(1, usage, argv[0]);
break;
}
}
}
但是我无法从用户那里获取输入(文件中缺少某些东西,我也很困惑,在哪里给出打开文件命令?)
并将其写入一个新文件。
运行make file_name
后,它会出现以下错误:
还请解释这意味着什么以及如何调试它:
error: ISO C90 forbids mixed declarations and code [-Werror=pedantic]
答案 0 :(得分:0)
您可能正在使用GCC编译器。默认情况下,gcc
正在接受C90标准代码。
您希望使用
进行编译gcc -Wall -g -std=c99
要求GCC发出几乎所有警告,调试信息并接受C99语言标准。
BTW,您可能对getline(3)函数感兴趣,您可以考虑(如果在Linux上编码)使用GNU readline或ncurses库。
如果使用GNU make,请考虑修改Makefile
(可能是CFLAGS=
行)或重新生成它(例如,使用./configure
为项目传递更好的参数autoconf
,或以更好的方式再次运行cmake
等等......)