无法将指针传递给scanf(“%s”,ptr);

时间:2012-09-09 17:10:52

标签: c string pointers scanf

所以我注释掉了scanf部分(并用我自己的字符串初始化它),为什么我使用scanf会崩溃?我相信我在scanf()中提出的实际论点;是对的。

#include <stdio.h>
#include <stdlib.h>
int strendmilan(char *s,char *t)
{
    int scntr = 0,tcntr = 0;
    while(*(s+(scntr++)) != '\0')
        ;
    --scntr;
    while(*(t+(tcntr++)) != '\0')
        ;
    --tcntr;
    while(tcntr >= 0)
        if(*(s+scntr--) == *(t+tcntr--))
            ;
        else
            return 0;
    return 1;
}
int main()
{
    char *s,*t; 
    /*
    scanf("%s",s);
    scanf("%s",t);
    */
    s = "HAHAHACOOL";
    t = "COOL";
    if(strendmilan(s,t) == 0)
        printf("NOT");
    else
        printf("YES");
    getch();
}

1 个答案:

答案 0 :(得分:7)

问题是你发送scanf()指向缓冲区的指针(例如,s),它可以存储读取的信息,你还没有分配s指向的任何缓冲区空间(t相同)

char *s,*t; 
scanf("%s",s);

因此,您可以为s分配一个char数组,或使用malloc()分配一些存储空间并将该调用的返回值分配给s