strcmp()函式,如果兩個字串引數相同,該函式就返回0,否則返回非零值

HanLongXia發表於2020-11-11

“字串”就相當於指標,用雙引號括起來的內容被視為指向該字串儲存位置的指標。害類似於把陣列名作為指向該陣列位置的指標

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;
}

相關文章