[ Foro de C ]

sprintf en c - universal character names are only valid in C++ and C99

03-Jan-2016 13:57
Invitado (mafalda)
1 Respuestas

Hola, estoy intentado utilizar un sprintf para escribir el nombre de un archivo de texto en el que quiero escribir unos datos utilizando bucles for para crear los diferentes archivos. La cosa es que me sale el siguiente error :
" warning: universal character names are only valid in C++ and C99 [enabled by default]
  int sprintf(nomb,"C:\Users\Gabi\Desktop\C\n%06ic%02i.dat",a,i);"

Mi codigo es

 
int dist[20][2][a];
	int i,j,z;
	FILE *fl;
 
	char nomb[39];//n000000c00.dat
	for(i=0;i<20;i++){ //casos
		int sprintf(nomb,"C:\Users\Gabi\Desktop\C\n%06ic%02i.dat",a,i);
		fl=fopen(nomb,"w");
		fprintf(fl,"%5s\r\n","data;");
		fprintf(fl,"%10s %3.0f %s \r\n","param n:=",a,';');
		fprintf(fl,"%13s \r\n","param: x y :="); 
 
		srand(time(NULL));
		for(j=0;i<a;i++){
			dist[i][1][j] = rand()%100 +1;//valor de x 
			dist[i][2][j] = rand()%100 +1;//valor de y
			fprintf(fl,"%i  %i  %i \r\n",j, dist[i][1][j],dist[i][2][j]);
 
			}
		}
		fprintf(fl,"%s ", ";"); 
		fclose(fl);
 


el valor de a está definido antes como un entero.
muchas gracias :D


04-Jan-2016 11:55
Nacho Cabanes (+31)

No es un error en sentido estricto, sino un warning que no detiene la compilación pero te avisa de que quizá estés haciendo algo de forma incorrecta.

En tu caso, se debe a que \u se usa para escribir caracteres extendidos del juego de caracteres UTF-8, como en

 
printf("\u178");
 


En cambio, tú lo estás usando de forma incorrecta, porque no has duplicado las barras en la ruta que indica el nombre de fichero. Tu ruta debería ser así:

 
sprintf(nomb,"C:\\Users\\Gabi\\Desktop");  // ...
 


 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)