【发布时间】:2013-04-20 19:02:22
【问题描述】:
所以我在下面有这段 C 代码。当我放置printf 语句来测试输入文件中的文本时,我看到我得到了一堆垃圾值,更具体地说,它们甚至不是字母或数字,我认为它们是带有问号的菱形他们。我认为这意味着它没有按应有的方式处理这些值。输入文件有点 MIPS 汇编代码,但在此上下文中它只是一个文本文件。我已经注释掉了我程序的所有其他部分,只剩下这个小部分,但我仍然收到错误的值。我在这里可能做错了什么?
我用来在控制台上运行程序的命令是:
./assembler -symbols adder.asm
Where ./assembler is the driver (argv[0])
-symbols is a tag used (argv[1])
adder.asm is the input file (argv[2])
所以一旦打开,我应该能够从这个文件中获取文本,据我所知,这不是文件的问题,它在早期就可以工作。
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
FILE *fp;
FILE *fp_out;
void main(int argc, char* argv[])
{
int mode;
if (strcmp(argv[1], "-symbols") == 0)
{
fp = fopen(argv[2], "r");
mode = 1;
}
else
{
fp = fopen(argv[1], "r");
fp_out = fopen(argv[2], "w");
mode = 2;
}
}
【问题讨论】:
-
为什么是 C++ 标签?这是 C。
-
不是真的,在 C 中应该是
int main。 -
@DanielFischer 就像在 C++ 中一样
-
你真的测试
fopen()调用成功了吗? -
尽管手册页告诉您并且有成千上万的示例、教程和书籍可以向您展示,但您不知道如何测试 fopen 是否成功?至于相关性,您说您放置了 printf 语句,但您没有显示它们;最重要的是,您是否在阅读打印数据的地方显示了声明- jaux 在上面告诉过您,那您为什么还要问呢?如果您想在这里得到帮助,请不要抱怨“紧张”的人并找可笑的借口。我们不是通灵者——提供一个完整的程序来说明问题。
标签: c input io command-line-arguments