1.C问题 奇怪的void* 达人求教
2.求高手三级C语言
C问题 奇怪的void* 达人求教
所谓的无类型指针,void *可以指向任何类型的数据
也就是个自由的指针 你前面说的对了
mencpy的操作对象就是一片内存 无所谓数据类型~
“不需要任何类型转换大家都可以使用它”很危险!你举的php程序 源码分析例子很特殊
void*p = str 因为指针的最小单位是字节 而字符串也是字节
但假如是个结构体 size>1 p++会让编译器不知所措 你永远无法通过sizeof((*void)p)得到正确的结果
void*体现了C++的自由,但也是危险的 绝对要避免这样的事情发生
求高手三级C语言
本题提供了一种使用字符串处理函数解决的方案,涉及的welsim源码函数有:char *strchr(char *s,char ch); - 从s所指向的字符串中查找字符ch,返回该字符的starflow 源码指针,找不到返回NULL。
void memset(char *s ,char ch,unsigned count); - 将s所指向的数组的前count个字符全部赋值为ch,若ch为'\\0'且count为字符数组长度,则清空数组。
void memcpy(char *s1,char *s2,unsigned count); - 将s2字符串的前count个字符拷贝到s1所代表的字符串中。
关于strcpy()和strcat()函数的使用,这里不再赘述。libuidk 源码
以下为程序源码:
void Str0R(void) {
int i; /* 遍历行 */
char *p,t[]; /* p指向字符'o',t用于存放'o'前的msnc 源码字符串 */
for(i=0;i
{
p=strchr(xx[i],'o'); /* 查找'o'字符,找到则让p指向它,否则返回NULL */
while(p!=NULL) {
memset(t,'\\0',); /* 清空数组t */
memcpy(t,xx[i],p-xx[i]); /* 将'o'前的字符拷贝到t中 */
strcpy(xx[i],p+1); /* 删除'o'及'o'前的字符串 */
strcat(xx[i],t); /* 将'o'前的字符串连接到处理后的字符串末尾 */
p=strchr(xx[i],'o'); /* 寻找下一个'o' */
}
}
}