әдепкі бойынша рұқсат етілмеген нөлдік таңба (лар)

I am trying to implement stack with array! Every time i execute the program runs fine but i am getting warning as null character(s) ignored enabled by default

Бұл ескерту нені білдіреді? .. Мен не істеп жатырмын?

Менің кодым:

#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

Мен Dev C ++ IDE пайдаланамын.

4
Мен өз сұрағымды өзгерттім!
қосылды автор user2227862, көзі
Мен өз сұрағымды өзгерттім!
қосылды автор user2227862, көзі
ескертуде онымен байланысты сызық бар ма?
қосылды автор Sam I am, көзі
«Мен C Dev C компиляторын қолданамын» деп айтқан кезде Dev-C ++ IDE-ді қолданып жатырсыз ба? Бұл MinGW (компиляторларға арналған gcc және g ++) бірге келеді.
қосылды автор Eric Finn, көзі

6 жауаптар

Егер сіз осы нөлдік таңба ескертулерінің үлкен сандарын көріп отырсаңыз, келесі мүмкіндікті қарастырыңыз. Мәселе файлды 16 биттік Unicode ретінде сақтаған редакторды пайдаланып, бастапқы файлды жасаған адамға себеп болуы мүмкін.

Оны түзету үшін (Linux-де) ешқандай редактор қажет емес. Жай файлды геанс редакторында ашыңыз (басқа редакторлар да бұл мүмкіндікті қолдай алады), егер ол UTF/UCS 16 болса, онда Құжат мәзірінде оны UTF8 түріне өзгертуге болады. Мүмкін, егер де бар болса, БМҚ-ны алу керек.

Бұл жағдайда қате күтуге болады, себебі ASCII ауқымындағы таңбалардың UCS16 кодтауы әрбір екінші байтты нөлдік таңбадан жасайды.

12
қосылды

Егер сіз осы нөлдік таңба ескертулерінің үлкен сандарын көріп отырсаңыз, келесі мүмкіндікті қарастырыңыз. Мәселе файлды 16 биттік Unicode ретінде сақтаған редакторды пайдаланып, бастапқы файлды жасаған адамға себеп болуы мүмкін.

Оны түзету үшін (Linux-де) ешқандай редактор қажет емес. Жай файлды геанс редакторында ашыңыз (басқа редакторлар да бұл мүмкіндікті қолдай алады), егер ол UTF/UCS 16 болса, онда Құжат мәзірінде оны UTF8 түріне өзгертуге болады. Мүмкін, егер де бар болса, БМҚ-ны алу керек.

Бұл жағдайда қате күтуге болады, себебі ASCII ауқымындағы таңбалардың UCS16 кодтауы әрбір екінші байтты нөлдік таңбадан жасайды.

12
қосылды

Бастапқы кодының файлында бір жерде байттың 0 мәні бар таңба бар ( ASCII NUL ). Мәтін редакторларының көбінде көрінбейтін болады.

Компилятор (gcc) бұл жай ғана бастапқы кодының ішінде болмауы тиіс екенін ескертеді.

Файлыңызды hex редакторында ашып, сол таңбаның қай жерде екендігін анықтап, түзетіңіз немесе бастапқы файлды жойып, оны осы жерде орналастырған кодтан көшіріңіз.

9
қосылды

Бастапқы кодының файлында бір жерде байттың 0 мәні бар таңба бар ( ASCII NUL ). Мәтін редакторларының көбінде көрінбейтін болады.

Компилятор (gcc) бұл жай ғана бастапқы кодының ішінде болмауы тиіс екенін ескертеді.

Файлыңызды hex редакторында ашып, сол таңбаның қай жерде екендігін анықтап, түзетіңіз немесе бастапқы файлды жойып, оны осы жерде орналастырған кодтан көшіріңіз.

9
қосылды

Басқалар айтқандай, ескерту бастапқы кодының нөлдік байт екенін білдіреді.

Бұл, мысалы, Linux-де бастапқыда Visual Studio студиясы ретінде жазылған, ол әдепкі бойынша UTF-16 ретінде сақталатын Linux-де компиляция жасауға тырысқанда орын алуы мүмкін. G ++ бастапқы файлдарды UTF-8-те болатынын күтетіндіктен, нөлдік байтты оқуды аяқтайды.

Менің жағдайда, кодтауды iconv (Linux)

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

Файлдың кодтамасын файлмен тексеруге болады

file myfile
2
қосылды

Басқалар айтқандай, ескерту бастапқы кодының нөлдік байт екенін білдіреді.

Бұл, мысалы, Linux-де бастапқыда Visual Studio студиясы ретінде жазылған, ол әдепкі бойынша UTF-16 ретінде сақталатын Linux-де компиляция жасауға тырысқанда орын алуы мүмкін. G ++ бастапқы файлдарды UTF-8-те болатынын күтетіндіктен, нөлдік байтты оқуды аяқтайды.

Менің жағдайда, кодтауды iconv (Linux)

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

Файлдың кодтамасын файлмен тексеруге болады

file myfile
2
қосылды