caracteres nulos ignorados habilitados por defecto

Estoy tratando de implementar la stack con la matriz! Cada vez que ejecuto el progtwig funciona bien, pero aparece una advertencia ya que los caracteres nulos ignorados están habilitados de forma predeterminada

¿Qué significa esta advertencia? … ¿Qué estoy haciendo mal?

Mi código es:

#include #include # define MAX 10 int top=-1; int arr[MAX]; void push(int item) { if(top==MAX-1) { printf("OOps stack overflow:\n"); exit(1); } top=top+1; arr[top]=item; }//warning int popStack() { if(top==0) { printf("Stack already empty:\n"); exit(1); } int x=arr[top]; top=top-1; return x; } void display() { int i; for(i=top;i>=0;i--) { printf("%d ",arr[i]); } return; } int peek() { if(top==-1) { printf("\nEmpty stack"); exit(1); } return arr[top]; } int main() { int i,value; printf(" \n1. Push to stack"); printf(" \n2. Pop from Stack"); printf(" \n3. Display data of Stack"); printf(" \n4. Display Top"); printf(" \n5. Quit\n"); while(1) { printf(" \nChoose Option: "); scanf("%d",&i); switch(i) { case 1: { int value; printf("\nEnter a value to push into Stack: "); scanf("%d",&value); push(value); break; } case 2: { int p=popStack(); printf("Element popped out is:%d\n",p); break; } case 3: { printf("The elements are:\n"); display(); break; } case 4: { int p=peek(); printf("The top position is: %d\n",p); break; } case 5: { exit(0); } default: { printf("\nwrong choice for operation"); } } } return 0; }//warning 

Estoy usando Dev C ++ IDE.

En algún lugar del archivo de código fuente, tiene un carácter con el valor de byte 0 (el carácter ASCII NUL ). Lo cual será invisible en la mayoría de los editores de texto.

El comstackdor (gcc) simplemente te está diciendo que ignoró ese carácter, que realmente no debería estar allí en tu código fuente.

Puede abrir su archivo en un editor hexadecimal, averiguar dónde está ese personaje y repararlo, o eliminar su archivo de origen y copiarlo y copiarlo del código que publicó aquí.

Si ve un gran número de estas advertencias de caracteres nulos, considere lo siguiente como una posibilidad. El problema podría deberse a que alguien creó el archivo de origen con un editor que guardó el archivo como Unicode de 16 bits.

Para arreglar eso (en Linux) no se necesita un editor hexadecimal. Simplemente abra el archivo en el editor geany (otros editores también pueden admitir esto) verifique las Propiedades del archivo para ver la encoding, si es un UTF / UCS 16, en el menú Documento puede cambiarlo a UTF8. Probablemente valga la pena eliminar la lista de materiales si hay uno también.

En este caso, se espera un error porque una encoding UCS16 de caracteres en el rango ASCII hará que cada segundo byte sea un carácter nulo.

Como han dicho otros, la advertencia significa que hay bytes nulos en su código fuente.

Esto puede suceder, por ejemplo, cuando intenta comstackr código en Linux que fue escrito originalmente como un proyecto de Visual Studio en Windows, que por defecto se guarda como UTF-16. Como g ++ espera que los archivos de origen estén en UTF-8, termina leyendo bytes nulos.

En mi caso, la solución más fácil fue convertir la encoding usando iconv (Linux)

 iconv myfile -f UTF-16 -t UTF-8 > myfile 

Puedes verificar la encoding de un archivo con el archivo

 file myfile 
    Intereting Posts