Estoy intentando recrear los comandos head, y tail de linux para mi clase de programación. Acabamos de empezar a usar C, por lo que soy nuevo en la idea de asignar memoria y punteros. Me pregunto por qué esto no funciona.C Basic Head Command
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv){
/* Checks if correct amount of arguements */
if(argc != 2 || argc != 4){
printf("Usage: %s head <file> \n Or: head <file> -n <number of characters>", argv[0]);
exit(-1);
}
if(strcmp(argv[1], "-n" != 0)){
char fileName[strlen(argv[1])] = argv[1];
}
}
//Compile error on char fileName[strlen(argv[1])] = argv[1];
Cualquier información adicional también sería útil.
'fileName' también solo es visible dentro de su bloque delimitador, en este caso la rama afirmativa de la instrucción' if'. – gcbenison
Solo verá el mensaje de uso, porque si 'argc' es igual a 2, no es igual a 4, y si es igual a 4, no es igual a 2, y si no lo es 2 ni 4, entonces ... –
¿Especificó '-std = c99' en la línea de comando de GCC? Aún debe hacer eso para que el compilador acepte un VLA (matriz de longitud variable). –