Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用堆栈错误反转字符串:参数1的类型不兼容';顶部'|_C - Fatal编程技术网

C 使用堆栈错误反转字符串:参数1的类型不兼容';顶部'|

C 使用堆栈错误反转字符串:参数1的类型不兼容';顶部'|,c,C,在这种情况下,你会遇到一个问题,因为 您在for循环中重新声明了类型为int的变量a,它超越了a的先前定义,并给出了无效参数的错误 您将错误的参数类型传递给strcattop(a)->valuehas type char,但是strcat接受char* 即使您将其更改为类型char*(通过执行&(top(a)->value)),您也会遇到问题,因为top(a)->value是一个不以null结尾的单个字符,strcat将不知道何时停止从源代码复制 您可能应该做的是通过数组访问st,例如st[i]

在这种情况下,你会遇到一个问题,因为

  • 您在for循环中重新声明了类型为
    int
    的变量a,它超越了
    a
    的先前定义,并给出了无效参数的错误

  • 您将错误的参数类型传递给strcat
    top(a)->value
    has type char,但是
    strcat
    接受
    char*

  • 即使您将其更改为类型
    char*
    (通过执行
    &(top(a)->value)
    ),您也会遇到问题,因为
    top(a)->value
    是一个不以null结尾的单个字符,
    strcat
    将不知道何时停止从源代码复制


  • 您可能应该做的是通过数组访问
    st
    ,例如
    st[i]=top(a)->value
    ,然后退出for循环后将其终止为null。

    在这种特殊情况下,您将遇到一个问题,因为

  • 您在for循环中重新声明了类型为
    int
    的变量a,它超越了
    a
    的先前定义,并给出了无效参数的错误

  • 您将错误的参数类型传递给strcat
    top(a)->value
    has type char,但是
    strcat
    接受
    char*

  • 即使您将其更改为类型
    char*
    (通过执行
    &(top(a)->value)
    ),您也会遇到问题,因为
    top(a)->value
    是一个不以null结尾的单个字符,
    strcat
    将不知道何时停止从源代码复制


  • 您可能应该做的是通过数组访问
    st
    ,例如
    st[i]=top(a)->value
    ,然后退出for循环后将其null终止。

    首先在
    for
    循环中,您将
    a
    重新声明为
    int
    ,这将是隐藏变量
    a
    在main中声明为
    stack
    。因此,将
    a
    更改为其他内容:

    incompatible type for argument 1 of 'top'|" at this instruction " strcat(st,top(a)->value);
    
    由于
    top(a)->value
    将是节点中存储的字符,您可以直接将其分配给字符串:

     strcat(st,top(a)->value);
               ^
               char * is expected but argument is of type char.     
    
    intj;
    对于(j=0;j值;
    流行音乐(a);
    }
    st[j]='\0';/*别忘了以null结尾字符串*/
    
    首先,在
    for
    循环中,您将
    a
    重新定义为
    int
    ,这将是隐藏变量
    a
    在main中声明为
    stack
    。因此,将
    a
    更改为其他内容:

    incompatible type for argument 1 of 'top'|" at this instruction " strcat(st,top(a)->value);
    
    由于
    top(a)->value
    将是节点中存储的字符,您可以直接将其分配给字符串:

     strcat(st,top(a)->value);
               ^
               char * is expected but argument is of type char.     
    
    intj;
    对于(j=0;j值;
    流行音乐(a);
    }
    st[j]='\0';/*别忘了以null结尾字符串*/
    
    为什么需要
    top()
    函数?为什么不直接使用
    a.top
    ?@e0k
    top()
    是朝着这个方向迈出的有用一步。为什么您需要
    top()
    函数呢?为什么不直接使用
    a.top
    ?@e0k
    top()
    是迈向成功的有用一步。
    int j;
    for(j = 0; j < i; j++){
         st[j] = top(a)->value;
         pop(&a);
    }
    st[j] = '\0'; /* Don't forget to null-terminate your string. */