我正在完成一项任务,我必须在执行程序时从命令行打开一个文件。
示例:
program.exe file.txt
然而,这对我来说根本不起作用。有人可以告诉我我做错了什么吗?这是我第一次将文件作为参数。
int main(int argc, char **argv) {
int value;
value = fileRead(argv[1]);
}
int fileRead(char argv[]) {
int value;
FILE *fp;
fp = fopen(argv[1], "r");
if (fp) {
fscanf(fp, "%d", &value);
} else {
fprintf(stderr, "Failed to open file!\n");
}
return value;
}
答案 0 :(得分:1)
你正在混淆一个角色和一个字符串。您将class DiffSquared extends Module {
val inputWidth = 8
val width = 16
val io = IO( new Bundle{
val X = Input(UInt(inputWidth.W))
val M = Input(UInt(inputWidth.W))
val Out = Output(UInt(width.W))
})
def zX(w:UInt) = Wire(UInt((w.getWidth+1).W),init=w).asSInt
val diff = Wire(init=zX(io.X)-zX(io.M))
io.Out := (diff*diff).asUInt
}
传递给argv[1]
fileRead
。然后在argv
中,您再次fileRead
。这实际上有效argv[1]
,它只给出了字符串的第二个字符。您需要从argv[1][1]
中删除[1]
,然后更改参数类型,或从main
中删除[1]
。