C指向字符串返回警告的指针

时间:2016-01-19 13:10:10

标签: c

我有以下代码:

int ver(unsigned char** v) {
    unsigned char str1[] = "1.0.2";
    strcpy(v, str1);
    return 0;
}
int main(int argc, char* argv[]) {
    unsigned char s[10];
    ver(s);
    printf("version = %s", s);
    return 0;
}

我收到以下警告:指针在签名方面有所不同。能告诉你吗。

5 个答案:

答案 0 :(得分:2)

ver的声明更改为:

int ver(unsigned char * v)

即。摆脱*个字符之一。

答案 1 :(得分:1)

关于签名的警告是因为jQuery('#directcheckoutbutton').on("click", function() { var productcode = jQuery('input:checked', '#product-options-wrapper').val(); // Get chosen value code var quickbuyurl = '<?php echo $_directcheckout; ?>'+productcode; // Add code to end of url setcheckoutLocation(quickbuyurl); }); strcpy期望printf("%s"),但您正在通过char*

同样unsigned char*应为int ver(unsigned char ** v)

答案 2 :(得分:0)

警告的原因:

strcpy()需要signed char*,并使用unsigned char*进行调用。

但也应该有其他警告:

函数ver()需要一个指向指针的指针:

int ver(unsigned char ** v){

ver(s)char发送一个指针:

unsigned char s[10];
ver(s);

要解决此问题,您可以将代码更改为:

int ver(char *v) {

    char str1[] = "1.0.2";
    strcpy(v, str1);
    return 0;
}

int main(int argc, char *argv[]){

    char s[10];
    ver(s);
    printf("version = %s", s);

    return 0;
}

答案 3 :(得分:0)

实际上问题是:

int ver(unsigned char ** v)

您必须将功能更改为:

int ver(unsigned char * v)

答案 4 :(得分:0)

你需要做两个修复:

1)按照别人告诉你的关于方法声明的内容,改为“int ver(unsigned char* v) {”;

2)只需在代码中加入<string.h>即可。

示例:

#include <stdio.h>
#include <string.h>

int ver(unsigned char* v) {
    unsigned char str1[] = "1.0.2";
    strcpy(v, str1);
    return 0;
}
int main(int argc, char* argv[]) {
    unsigned char s[10];
    ver(s);
    printf("version = %s", s);
    return 0;
}