我有以下代码:
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;
}
我收到以下警告:指针在签名方面有所不同。能告诉你吗。
答案 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;
}