字符串拷贝函数没有返回值的strcpy
问题描述:
sipurl
和regurl
是NSString
这是我从UItextField
字符串拷贝函数没有返回值的strcpy
const char *sipAddr = [sipUrl cStringUsingEncoding:NSUTF8StringEncoding];
const char *regAddr = [regUrl cStringUsingEncoding:NSUTF8StringEncoding];
const char *uname = [orgUsername cStringUsingEncoding:NSUTF8StringEncoding];
const char *pword = [password cStringUsingEncoding:NSUTF8StringEncoding];
//const char *pword = [password UTF8String];
const char *realm = [realmStr cStringUsingEncoding:NSUTF8StringEncoding];
//char *sipAddrArr=strdup(sipAddr);
//char *regAddrArr=strdup(regAddr);
//char *unamearr=strdup(uname);
//char *pwordarrnew = strdup(pword);
char sipAddrArr[[sipUrl length]];
strcpy(sipAddrArr,sipAddr);
char regAddrArr[[regUrl length]];
strcpy(regAddrArr,regAddr);
char unamearr[[orgUsername length]] ;
strcpy(unamearr, uname);
char pwordarrnew[[password length]];
strcpy(pwordarrnew,pword);
char realmchr[[realmStr length]];
strcpy(realmchr,realm);
char pwordarr1[] = {"10000"};
printf("\nPassword value sent: %s",pword);
printf("\nPassword value sent: %s",pwordarr1);
pword
具有价值得到试图复制不变焦炭为char我用它返回strcpy函数pword没有价值。在模拟器中测试时,相同的代码工作正常,但在连接到iOS手机时不起作用。
答
这可能是也可能不是你的问题的原因,但它是在你的代码中的错误:
您正在服用NSString
,将其转换为UTF8 C-字符串,然后复制C-字符串转换为根据NSString
的长度大小的C数组。这是错误的,NSString
和它的UTF8转换可以有不同的长度。您需要确定UTF8字符串的长度并允许字符串结束标记。例如:
char sipAddrArr[strlen(sipAddr)+1];
strcpy(sipAddrArr,sipAddr);
对于其他阵列也是类似的。
HTH
您是否做过任何调试?就像在某些地方添加一些'printf'语句,看看那个时候变量中的值是什么?如果没有,请尝试一下并检查“pword”的值。 –
@kiner_shah是pword有来自textfield的值,但是当我尝试将pword的值复制到pwordarrnew时pwordarrnew没有值,当我尝试打印时。 – Jeeva