Hoo*_*lum 2 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();
}
Run Code Online (Sandbox Code Playgroud)
问题是您正在发送scanf()
一个指向缓冲区(例如s
)的指针,它可以存储读取的信息,但是您没有分配任何指向的缓冲区空间s
(和相同的t
)
char *s,*t;
scanf("%s",s);
Run Code Online (Sandbox Code Playgroud)
因此,您可以为其分配一个char数组s
,或者用于malloc()
分配一些存储空间并将该调用的返回值分配给s
.