[英]String copy function returns no value strcpy while converting NSString to c string
sipurl
和regurl
是我从UItextField
获得的NSString
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复制到char时有价值我使用strcpy函数它不返回pword的值。 在模拟器中测试时,相同的代码工作正常但在连接到iOS手机时不起作用。
这可能是您的问题的原因,也可能不是,但在您的代码中是错误的:
您正在使用NSString
,将其转换为UTF8 C字符串,然后将C字符串复制到根据NSString
长度调整大小的C数组中。 这是错误的, NSString
及其UTF8转换可以是不同的长度。 您需要确定UTF8字符串的长度并允许字符串结束标记。 例如:
char sipAddrArr[strlen(sipAddr)+1];
strcpy(sipAddrArr,sipAddr);
并且类似地用于其他阵列。
HTH
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.