如果像这样的指针函数,如何分配内存?

时间:2013-04-14 22:26:28

标签: c pointers

我是C编程的初学者,我刚开始学习指针的概念。有人可以解释为什么我的代码以分段错误结束,而我认为我做得对吗? 也许我缺乏一些内存分配概念,我希望这里有人可以详细解释它们,或者指出我可以找到解决问题的方法,例如我的。

char strs(char *s, char *k)
{
    int flag=0;
    do
    {
        if(*k=='\0') return (*(s-flag));
        if(*s==*k)
        {
            k++;
            flag++;
        }
        if(flag!=0 && *s!=*k)
        {
            k=k-flag;
        }   
        s++;
    } while(*s!='\0');
    return('\0');
}

main()
{
    char s[10],k[5];
    printf("Please enter the main string: ");
    scanf("%s",s);
    printf("Please enter the key string: ");
    scanf("%s",k);
    if((strs(s,k))!='\0') printf("The pointer is at <<<%s>>> in %s",strs(s,k),s);
    if((strs(s,k)=='\0')) printf("\nKey string not found, value of strs is %s", strs(s,k));
}

1 个答案:

答案 0 :(得分:1)

您的strs函数返回一个char,但您尝试使用%s格式说明符输出它。要输出单个字符,请使用%c:

printf("The pointer is at <<<%c>>> in %s",strs(s,k),s);