十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可以使用strncpy()来将复制字符串中前n个字符。比如:
创新互联公司是一家专业的成都网站建设公司,我们专注网站设计制作、网站制作、网络营销、企业网站建设,卖友情链接,一元广告为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。
char str1[] = "this is a string";
char str2[3];
strncpy(str2, str1, 2);
str2[2] = '\0'; // 此时str2="th"
我对你这段程序能实现预定目标表示严重怀疑
-------------------------------消去了后面的‘#’
int
i=0,j;
while(*s=='#')
s++;
while(*s!='\0')
{
s[i++]=*s;
s++;
}
s[i]='\0';
}
纵观整个程序,其实你可能对指针还是不够理解。应该继续回去看看有关这些方面的内容。拿下面这个程序分析下,其他几个问题差不多
---------------------------------------------
int
i=0,j=0;
for(i=0;s[i]=='#';i++)
{
while(s[j]!='\0')
{
s[j]=s[j+1];
j++;
}
j=0;
}
你的程序的意图是:传进来的s是一个指针,s[i]=='#'这里先检测前面是不是'#'号,是的话再看看当前字符是不是到了字符串末尾,不是就整体前移,完成删除'#'字符的功能
但是在循环体中嵌套循环出现了问题。
while(s[j]!='\0')
{
s[j]=s[j+1];
j++;
}
j=0;
第一次循环没问题,第二次就出问题了。当你整体前移了之后,原来的第二个字符变成第一个字符,第三个变成了第二个.......而i自加了,那么第二次检测的其实是原来的第三个字符(跳过了第二个字符),第三次检测的就是第五个了。
int
i=0,j=0;
while(*s=='#')
{s++;j++;}
while(s[j]!='\0')
{s[i++]=s[j++];
}
s[i]='\0';}
这一段则是s后移到了第一个不是'#'的位置,但是你j又加了,那么s[j]指向的位置就不是第一个非'#'字符了。
char是字符,char* 是指向字符的指针,当然也可以指向字符串(就是一串字符)。
char x=‘a’,x本身存储的就是字符,char *x=‘abc’,x只是一个地址(就像门牌号一样的地址),指向存放‘abc’的地方。是2个数据类型。
现在你知道为什么去掉*就完全错了吧。
%c打印的是char,%s打印的是string。至于穿进去什么那就是规定了