Tôi đang cố gắng để có được một chương trình cho phép người dùng nhập một từ hoặc ký tự, lưu trữ và sau đó in nó cho đến khi người dùng nhập lại, thoát khỏi chương trình. Mã của tôi trông như thế này:
#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;
}
Vấn đề là tôi tiếp tục in chuỗi đầu vào, ngay cả khi đầu vào của người dùng (kiểm tra) khớp với bản gốc (đầu vào). Tôi có đang so sánh hai cái không chính xác?
strcmp()
trả về 0 khi các đầu vào của nó bằng nhau giải thích cách so sánh các chuỗi cho đẳng thức, bất đẳng thức, nhỏ hơn, lớn hơn, nhỏ hơn hoặc bằng và lớn hơn hoặc bằng. Không phải tất cả các so sánh chuỗi là cho bình đẳng. So sánh trường hợp nhạy cảm là khác nhau một lần nữa; các so sánh đặc biệt khác (ví dụ thứ tự từ điển) đòi hỏi các bộ so sánh chuyên biệt hơn, và có các biểu thức cho các so sánh phức tạp hơn.
gets()
là không có. Nó cũng đã bị xóa khỏi tiêu chuẩn kể từ C11 -> Vui lòng đọc Tại sao chức năng get lại nguy hiểm đến mức không nên sử dụng?
gets( )
đã được loại bỏ khỏi tiêu chuẩn. Sử dụngfgets( )
thay thế.