ฉันพยายามรับโปรแกรมเพื่อให้ผู้ใช้ป้อนคำหรือตัวอักษรเก็บไว้แล้วพิมพ์จนกระทั่งผู้ใช้พิมพ์อีกครั้งออกจากโปรแกรม รหัสของฉันมีลักษณะเช่นนี้:
#include <stdio.h>
int main()
{
char input[40];
char check[40];
int i=0;
printf("Hello!\nPlease enter a word or character:\n");
gets(input);
printf("I will now repeat this until you type it back to me.\n");
while (check != input)
{
printf("%s\n", input);
gets(check);
}
printf("Good bye!");
return 0;
}
ปัญหาคือฉันได้รับการพิมพ์ของสายป้อนข้อมูลแม้ในขณะที่การป้อนข้อมูลโดยผู้ใช้ (ตรวจสอบ) ตรงกับต้นฉบับ (อินพุต) ฉันกำลังเปรียบเทียบทั้งสองอย่างไม่ถูกต้องหรือไม่
strcmp()
ส่งกลับค่าศูนย์เมื่ออินพุตที่เท่ากันอธิบายวิธีเปรียบเทียบสตริงสำหรับความเสมอภาคความไม่เท่าเทียมกันน้อยกว่ามากกว่ามากกว่าน้อยกว่าหรือเท่ากับและมากกว่าหรือเท่ากับ การเปรียบเทียบสตริงทั้งหมดไม่ได้มีไว้เพื่อความเท่าเทียมกัน การเปรียบเทียบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่นั้นแตกต่างกันอีกครั้ง การเปรียบเทียบพิเศษอื่น ๆ (ตัวอย่างเช่นพจนานุกรม) ต้องการการเปรียบเทียบที่พิเศษกว่าและมี regexes สำหรับการเปรียบเทียบที่ซับซ้อนยิ่งขึ้น
gets()
ไม่มีการไป มันถูกลบออกจากมาตรฐานตั้งแต่ C11 -> โปรดอ่านเหตุใดฟังก์ชั่นการรับจึงอันตรายมากจนไม่ควรใช้
gets( )
ถูกลบออกจากมาตรฐาน ใช้fgets( )
แทน