Hỏi cách xóa enter trong bộ nhớ đệm

#include <stdio.h>
#include <ctype.h>


int main()
{
	char ch;
	int nVowels,nConsonants,nOthers;
	nVowels=nConsonants=nOthers=0;
	printf("Nhap ky tu tren ban phim:");

	while (ch!= '\n')
	{
	    
		ch = getchar();
		ch = toupper(ch);
		
		if(ch>='A'and ch<='Z')
		{switch (ch){
				case'A':
				case'E':
				case'I':
				case'O':
				case'U':nVowels++;break;
				default:nConsonants++;
			}
			
		}else nOthers++;
		
	}
	printf("nVowels:=%d\n",nVowels);
	printf("nConsonants:=%d\n",nConsonants);
	printf("nOthers:=%d\n",nOthers);
	getchar();
	
	return 0;
	
	
}

Khi chạy thì cái nOthers luôn nhảy lên 1 là phím enter, ai giúp em xóa enter khi nhập vào trong bộ nhớ đệm đc ko ạ

Ơ, nó luôn tăng thêm 1 vậy thì cứ trừ 1 ra là xong chứ vấn đề có to tát gì đâu nhỉ :joy: Với lại, ký tự newline không còn nằm trong bộ nhớ đệm đâu, là bạn không giải quyết thôi. Có thể chèn thêm 1 cái if kiểm tra '\n' cho phần else nOthers++; nhưng như vậy thì không hay (tối ưu) bằng cách trừ đi 1 cho nOthers.

Với lại:

HOW?

1 Like

‘A’ với ‘Z’ là con số trong C/C++ :slight_smile:

2 Likes

Ý mình là chữ “and” kia kìa :joy:

and được chấp nhận như là && mà.

Cái này mới à? GCC không compile được :v
EDIT: okay, g++ thì được. Hết hồn, đó giờ toàn code C chứ không có C++, thiếu sót quá :joy:

2 Likes

http://en.cppreference.com/w/cpp/keyword/and

ornot nữa. C++ khác C nhiều.

Lỗi sai là do bạn xét điều kiện trước khi getchar thôi, không phải do enter đâu

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?