每当我尝试编译代码时,它都会显示 *int 错误

发布于 2025-01-09 08:46:18 字数 1377 浏览 1 评论 0原文

prog.c:在函数“main”中:

prog.c:35:20:警告:格式“%d”需要“int”类型的参数,但参数 3 的类型为“void *”[-Wformat=] printf("\n %c \t %d \t 标识符\n",c,p); ^

prog.c:47:24:警告:格式“%d”需要“int”类型的参数,但参数 3 的类型为“void *”[-Wformat=] printf("\n %c \t %d \t 运算符\n",ch,p); ^ '''

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
void main()
{
    int i=0,j=0,x=0,n;
    void *add[5],*p;
    char ch,srch,b[15],d[15],c;
    printf("Expression terminated by $:");
    while((c=getchar())!='$')
    {
        b[i]=c;
        i++;
    }
    n=i-1;
    printf("Given Expression:");
    i=0;
    while(i<=n)
    {
        printf("%c",b[i]);
        i++;
    }
    printf("\n Symbol Table\n");
    printf("Symbol \t addr \t type");
    while(j<=n)
    {
        c=b[j];
        if(isalpha(toascii(c)))
        {
            p=malloc(c);
            add[x]=p;
            d[x]=c;
            printf("\n %c \t %d \t identifier\n",c,p);
            x++;
            j++;
        }
        else
        {
            ch=c;
            if(ch=='+'||ch=='-'||ch=='*'||ch=='=')
            {
                p=malloc(ch);
                add[x]=p;
                d[x]=ch;
                printf("\n %c \t %d \t operator\n",ch,p);
                x++;
                j++;
            }
        }
    }
}

'''

prog.c: In function ‘main’:

prog.c:35:20: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘void *’ [-Wformat=]
printf("\n %c \t %d \t identifier\n",c,p);
^

prog.c:47:24: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘void *’ [-Wformat=]
printf("\n %c \t %d \t operator\n",ch,p);
^
'''

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
void main()
{
    int i=0,j=0,x=0,n;
    void *add[5],*p;
    char ch,srch,b[15],d[15],c;
    printf("Expression terminated by $:");
    while((c=getchar())!='

'''

) { b[i]=c; i++; } n=i-1; printf("Given Expression:"); i=0; while(i<=n) { printf("%c",b[i]); i++; } printf("\n Symbol Table\n"); printf("Symbol \t addr \t type"); while(j<=n) { c=b[j]; if(isalpha(toascii(c))) { p=malloc(c); add[x]=p; d[x]=c; printf("\n %c \t %d \t identifier\n",c,p); x++; j++; } else { ch=c; if(ch=='+'||ch=='-'||ch=='*'||ch=='=') { p=malloc(ch); add[x]=p; d[x]=ch; printf("\n %c \t %d \t operator\n",ch,p); x++; j++; } } } }

'''

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风无影 2025-01-16 08:46:18

你应该在 printf 中使用 %p 就像 printf("%p",p);

you should use %p in printf just like printf("%p",p);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文