“字符串”
就相当于指针,用双引号括起来的内容被视为指向该字符串储存位置的指针。害类似于把数组名作为指向该数组位置的指针。
strcmp()
比较“A”
和本身,返回0
;比较“A”和"B"
,返回-1
;比较“B”和"A"
,返回1
。这说明,如果在字母表中第1个字符串位于第2个字符串前面,strcmp()中就返回负数;反之,strcmp()则返回正数。所以strcmp()比较“C”和"A",返回1。其他系统可能返回2,即一两者的ASCII码之差
#include<stdio.h>
#include<string.h>
#define N 30
#define M 13
#define ANSWER "Greas"
char *s_gets(char *, int );
int main(void)
{
char a[N];
puts("Who is buried in Grant's tomb?");
s_gets(a, N);
//strcmp()函数,如果两个字符串参数相同,该函数就返回0,否则返回非零值。
//由于非零值都为“真”可以使用while (strcmp(try,ANSWER))代替
while(strcmp(a, ANSWER) != 0) //判断我们输入到数组a中的内容与ANSWER中的字符串内容是否相同
{
puts("No,that's wrong,Try again.");
s_gets(a, N);
}
puts("That's right!");
return 0;
}
char *s_gets(char *st, int n)
{
char*ret_val;
char *find;
ret_val = fgets(st, n, stdin);
if (ret_val != NULL)
{
find = strchr(st, '\n');
if (*find == '\n')
{
*find = '\0';
}
else
{
while (getchar() != '\n')
continue;
}
}
return ret_val;
}