Apertura de un archivo y salida en C

Estoy usando XCode y estoy tratando de abrir un archivo que se pasa como un argumento de línea de comando, y genera el número de líneas que se pasa como un argumento de línea de comando de ese archivo, a la consola en C. En XCode, Mis argumentos son “test.rtf” y “5”. Mi rtf se parece a

line 1 test line 2 test line 3 test line 4 test line 5 test line 6 test line 7 test line 8 test line 9 test line 10 test 

He intentado esto con mi rtf en la misma carpeta que mi carpeta de proyectos XCode, y en la carpeta de depuración donde se encuentra el ejecutable. Mi código es:

 #include  #include  #define CORRECT_PARAMETERS 2 int main(int argc, char *argv[]) { int x; if (argc != CORRECT_PARAMETERS) { printf("Wrong number of parameters inputted."); } else { FILE *inFp; /*declare a file pointer */ if ((inFp = fopen(argv[0], "r") == NULL)) { fprintf(stderr, "Can't open file"); exit(EXIT_FAILURE); } else { for (x = 1; x <= argv[1]; x++) { while ((x = fgetc(inFp)) != EOF) { printf("%c", x); } } } fclose(inFp); } } 

Sé que mi código puede no ser correcto al emitir el número de líneas ingresadas en la línea de comando, pero no puedo obtener la parte inicial que funciona simplemente abriendo el archivo. Lo que se produce es:

 Wrong number of parameters inputted. 

¡Gracias!

En XCode, mis argumentos son “test.rtf” y “5”.

Bueno, entonces argc tomará el valor de 3.

argv [0]: nombre del progtwig

argv [1]: “test.rtf”

argv [2]: 5

Debe actualizar su constante definida para tomar el valor de 3.

  if ((inFp = fopen(argv[0], "r") == NULL)) 

argv [0] es el nombre del progtwig que se está ejecutando.

Lo que estás buscando (primer argumento) es argv [1]

 int x; for (x = 1; x <= argv[1]; x++) { 

Esto huele a problemas. Estás comparando una cadena-c con un entero. Intente esto (incluido el uso del argumento 2 en lugar de 1, como se mencionó anteriormente):

 int x; int limit = atoi(argv[2]); for (x = 1; x <= limit; x++) 

Aquí estás cambiando el valor de X.

  while ((x = fgetc(inFp)) != EOF) 

La asignación x = 1 solo ocurre una vez !!!. Lee inFp en otra variable.