8

配列でスタックを実装しようとしています! プログラムを実行するたびに正常に実行されますが、 null 文字が無視されるため、デフォルトで有効になっているという警告が表示されます

この警告はどういう意味ですか?..何が間違っていますか?

私のコードは次のとおりです。

#include<stdio.h>
#include<stdlib.h>
# 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

3 に答える 3

13

ソース コード ファイルのどこかに、バイト値が 0 の文字 ( ASCII NUL文字) があります。これは、ほとんどのテキスト エディターでは表示されません。

コンパイラ(gcc)は、その文字を無視したことを伝えているだけです。これは、実際にはソースコードにあるべきではありません。

16 進エディターでファイルを開き、その文字がどこにあるかを把握して修正するか、ソース ファイルを削除して、ここに投稿したコードからコピーして貼り付けることができます。

于 2013-06-20T19:46:55.417 に答える