Perfectamente, lo primero se puede hacer como te dice
rir3760. Si quieres programar una función tú mismo, a modo de ejercicio, puedes hacer algo así:
int cmp(int* vec1, int* vec2, int N) {
int i;
int b = 1;
i = 0;
while (i < N && b) {
b = vec1[i]==vec2[i];
++i;
}
return b;
}
Y utilizarla donde convenga. Por ejemplo, if (cmp(num,vec,4) Loquesea();
La ventaja de memcmp es que es más genérica y sirve para cualquier tipo de datos.
Lo segundo se podría hacer, aunque no creo que de manera portable. Básicamente el problema se puede reducir a saber si un archivo existe o no. Está la librería errno.h, de la biblioteca estándar. Esta librería define un entero, errno, que toma distintos valores en función de los errores que tengan las llamadas al sistema (en caso de que no haya error, el comportamiento no está definido). El problema es que en Linux y en Windows no se definen los mismos errores en el errno, ni para las mismas situaciones (el estándar requiere sólo 3 códigos de error básicos). Bajo Linux, el código del error genérico "Not such file or directory" es el 2, aunque puedes usar la macro ENOENT también.
Se puede usar una función como ésta si usas Linux.
int existsFile(char* filename) {
FILE* f = NULL;
f = fopen(filename,"r");
if (f == NULL && errno == ENOENT)
return 0;
else {
fclose(f);
return 1;
}
}
Con eso puedes comprobar si un archivo existe o no (aségurate de que filename tenga un carácter '\0' al final!!). Si estás en Windows, habría que mirar qué número de errores utiliza y cómo y cuándo los modifica. Si no hay ningún código apropiado en el errno, se debería usar otra librería de este SO.
Me cuesta entender tu última duda. ¿Podrías poner un código de ejemplo que lo ilustre?
¡Saludos!