类型的参数" char(*)[16]"与#34; const char *"类型的参数不兼容

时间:2016-05-17 15:13:32

标签: c

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <iostream>
#include <string>
#include "stdafx.h" 

#define MAXNAME 16

void main(int argc, char *argv[])
{
    int c, i, j, f;

    char lib[MAXNAME] = "lib\0       ";
    FILE *in, *out;
    char name[MAXNAME];

    /* open input file */
    i = 0;

    while ((name[i] = *argv[1]) != '\0') {
        i++;
        argv[1]++;
    }
    if ((in = fopen(&name, "r")) == NULL) {
        printf("Can't open file\n");
        goto end;
    }

    /* open output file. Same name as input but with .lib extension */
    while (name[i] != '.') i--;
    j = 0;
    i++;
    while (MAXNAME >= (i + j)) {
        name[i + j] = lib[j];
        j++;
    }

    if ((out = fopen(&name, "w")) == NULL) {
        printf("Can't open file\n");
        goto end;
    }

我正在尝试在C中打开一个文件。我正在使用Visual Studio 2015.当我编译前面的代码时,我收到以下错误。

  1. 类型char (*)[16]的参数与参数of不兼容 输入const char *
  2. FILE *fopen(const char *,const char *): 无法将参数1从char (*)[16]转换为const char *
  3. 我从评论中了解到,我试图分配给另一个的两个数量中的一些是不同的格式,但是,我无法修复我的错误。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您正在尝试将指针传递给char name [16],但fopen需要“const char *”。

您的解决方案应该直接在fopen中使用argv [1]。

fopen(argv[1], "r");