2016-05-17 2 views
-1
#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 Когда я скомпилировать предыдущий код Я получаю следующие ошибки.Аргумент типа «полукокса (*) [16]» несовместим с параметром типа «Const символ *»

  1. аргумент типа char (*)[16] несовместим с параметром типа const char *
  2. FILE *fopen(const char *,const char *): не может преобразовать аргумент 1 из char (*)[16] в const char *

я понял из комментария, что некоторые из моих двух величин, Я пытаюсь назначить один для другого в разных форматах, но я не могу исправить свою ошибку. Может кто-нибудь, пожалуйста, помогите мне?

+5

'Еореп (& название, "г")' -> 'FOPEN (имя, "г")' – BLUEPIXY

+2

или избежать модификации 'ARGV [1]', а вместо этого просто 'FOPEN (ARGV [1] , "r") '. –

+1

Вы можете взять имя файла как argv [1]. «Главная» также может быть определена как «int main (int argc, const char * argv [])» .. – user3078414

ответ

0

Вы пытаетесь передать указатель на имя символа [16], но fopen требует «const char *».

Ваше решение должно использовать argv [1] непосредственно в fopen.

fopen(argv[1], "r"); 
Смежные вопросы