new失去一个内存指针,想之后取这个空间的第一个字符为什么不行
new得到一个内存指针,想之后取这个空间的第一个字符为什么不行?
问题:
char* s=NULL;//总的字符串空间
char* s1=new char[2];//获取一个char长度的字符
s_len=100;//空间大小
s=new char[s_len];//申请空间
int i=0;
while(i<=s_len)
{
//s中存放的是edit控件中的输入数字比如1212121212121212112121212
strncpy(s1,s+i,1);//依次拷贝一个字符给s1
MessageBox(NULL,s1,NULL,MB_OK);//希望得到1、2、1、2这样的显示
}//end while
结果:
不是想要的,获得的字符是三个int长度,第一个是正常的数字,但是后面都是乱码?为什么。
请高手指教!!!谢谢
------解决思路----------------------
strncpy(s1,s+i,1);//这个函数的具体用法你要清楚:
1、strncpy 指定复制 n 个字符,
2、不足时用NULL结束符填充
3、多的话不会写NULL结束符。你上面的代码就是这个问题了。只复制一个字符,但字符串结束符却没有,导致后面一堆乱码。
------解决思路----------------------
你查查 函数strncat的说明,你那样做,一点变化都没有。
strncat 是连接两个字符串,最多加入 n 个字符。
int n = 1 ;
strncpy(s1,s+i,n);
S1[n] = 0 ; //这样设字符串结束符。使用strncpy时,不要忘记设置字符串结束标志。
你的例子,这样实现更简单:
S1[0] = s[i] ;
S1[1] = 0 ;
------解决思路----------------------
while(i<=s_len)
{
//s中存放的是edit控件中的输入数字比如1212121212121212112121212
strncpy(s1,s+i,1);//依次拷贝一个字符给s1
MessageBox(NULL,s1,NULL,MB_OK);//希望得到1、2、1、2这样的显示
}//end while
是个死循环!!!
------解决思路----------------------
这个你应该自行理清楚程序运行的逻辑 。
在while 循环中, i 值没变,当然就会死循环。
问题:
char* s=NULL;//总的字符串空间
char* s1=new char[2];//获取一个char长度的字符
s_len=100;//空间大小
s=new char[s_len];//申请空间
int i=0;
while(i<=s_len)
{
//s中存放的是edit控件中的输入数字比如1212121212121212112121212
strncpy(s1,s+i,1);//依次拷贝一个字符给s1
MessageBox(NULL,s1,NULL,MB_OK);//希望得到1、2、1、2这样的显示
}//end while
结果:
不是想要的,获得的字符是三个int长度,第一个是正常的数字,但是后面都是乱码?为什么。
请高手指教!!!谢谢
------解决思路----------------------
strncpy(s1,s+i,1);//这个函数的具体用法你要清楚:
1、strncpy 指定复制 n 个字符,
2、不足时用NULL结束符填充
3、多的话不会写NULL结束符。你上面的代码就是这个问题了。只复制一个字符,但字符串结束符却没有,导致后面一堆乱码。
------解决思路----------------------
你查查 函数strncat的说明,你那样做,一点变化都没有。
strncat 是连接两个字符串,最多加入 n 个字符。
int n = 1 ;
strncpy(s1,s+i,n);
S1[n] = 0 ; //这样设字符串结束符。使用strncpy时,不要忘记设置字符串结束标志。
你的例子,这样实现更简单:
S1[0] = s[i] ;
S1[1] = 0 ;
------解决思路----------------------
while(i<=s_len)
{
//s中存放的是edit控件中的输入数字比如1212121212121212112121212
strncpy(s1,s+i,1);//依次拷贝一个字符给s1
MessageBox(NULL,s1,NULL,MB_OK);//希望得到1、2、1、2这样的显示
}//end while
是个死循环!!!
------解决思路----------------------
这个你应该自行理清楚程序运行的逻辑 。
在while 循环中, i 值没变,当然就会死循环。