#include
#include
char *snum(char *ps,char *str2)
{
int i,n,m,j;
n=strlen(ps);
m=strlen(str2);
char *NewBuff;
for ( j = 0; j < m; j++)
for ( i = 0; i < n; i++)
if (*(str2+j)==*(ps+i))
NewBuff=*ps+i;
return (NewBuff);
}
int main()
{
int i,k;
char *pt;
char *ps = "abcdef";
char *str2 = "aeiou";
char *snum(char *ps,char *str2);
pt=snum(ps,str2);
k=strlen(pt);
for ( i = 0; i printf("%d %c ",i,*(pt+i));
}
}
请教各位,为什么新指针指向只有一个指针内容。
因为 char *snum(char *ps,char *str2) 函数里的写法,返回的值是两个字符串中最后一个相同的字符,在这段代码里:char *ps = "abcdef"; char *str2 = "aeiou"; 先找到字符 'a' ,将 NewBuff= ps+i; 赋值,然后继续循环,再找到了 ‘e', NewBuff= ps+i; ,NewBuff再次赋值,覆盖了第一次赋值,最终 NewBuff指向了字符串ps 里的 e , 然后回到主函数 pt=snum(ps,str2); , 此时pt 指向“ef\0” ,所以最后的输出:0 e 1 f 。 代码里这句:NewBuff=*ps+i; ,是错误的,ps 前面没有‘*’ 号,应改为:NewBuff = ps+i;
NewBuff=ps+i;
//尾插法插入结点
void insertNodeByTail(struct Node* headNode, int data)
{
struct Node* newNode = createNode(data);
struct Node* posNode = headNode;
while (posNode->next != NULL)
{
posNode = posNode->next;
}
posNode->next = newNode;
}