请教:
问题1:
char aa[10] = {0}
char bb[20] = {0}void f1()
{
_tcscpy(aa,"12345678");
_tcscat(bb,aa);
}1:
现在 bb 是不是123456780000000000002:
现在我想把 bb 的前 5 位移掉
后面的补上来
变为
67800000000000000000这个呈现要怎么写
3:
当用 _tcscat 的时候
怎么知道是从哪里开始接呢
如:
当 bb 位
12345678000000000000
_tcscpy(aa,"123");
应该从 8 开始接
是不?如果想从最开始接的话
那么我需要先
memset(bb,'0',sizeof(bb));
然后
_tcscpy(aa,"123");
是吗?谢谢!
问题1:
char aa[10] = {0}
char bb[20] = {0}void f1()
{
_tcscpy(aa,"12345678");
_tcscat(bb,aa);
}1:
现在 bb 是不是123456780000000000002:
现在我想把 bb 的前 5 位移掉
后面的补上来
变为
67800000000000000000这个呈现要怎么写
3:
当用 _tcscat 的时候
怎么知道是从哪里开始接呢
如:
当 bb 位
12345678000000000000
_tcscpy(aa,"123");
应该从 8 开始接
是不?如果想从最开始接的话
那么我需要先
memset(bb,'0',sizeof(bb));
然后
_tcscpy(aa,"123");
是吗?谢谢!
字符0,1,2,3,4,5,6,7,8和ASCII码0,1,2,3,4,5,6,7,8是不同的。
1.现在 bb 是:
0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
2.bb 的前 5 位移掉 for (int i=0;i<20;i++)
{
if(i<15)
bb[i]=bb[i+5];
else
bb[i]=0;
}3._tcscpy(bb,"123");是从‘8’开始接
memset(bb,'0',sizeof(bb));
_tcscpy(bb,"123");
可以从最开始接
memset(bb,'0',sizeof(bb));是将bb全部设置为字符'0',要把bb内容清空,应该写为memset(bb,0,sizeof(bb));总的看来,楼主只要分清楚0和'0'的区别上面的问题就都可以解决了。再说一下0用转译字符表示是'\0'。
====
这个操作相当于字符串截断
所以你第一个问题的答案是:不是2做个循环不就好了
for(int i=0; i<10; i++)
{
if(i>5)
bb[i]='0';
else
bb[i]=bb[i+5];
}3. 你自己调一下不就知道了
char temp[20];
if ( c == strstr(aa,"6"))
{
_w64 iFound = c - aa;
memcpy(temp,aa,iFound);
}
strcpy(aa,temp);然后写for循环把后面的都置为0。