01/10/2018, 14:16

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!= '
')
	{
	    
		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
",nVowels);
	printf("nConsonants:=%d
",nConsonants);
	printf("nOthers:=%d
",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 ạ

Khoa NTA viết 16:29 ngày 01/10/2018

Ơ, 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ỉ 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:

if(ch>='A’and ch<=‘Z’)

HOW?

rogp10 viết 16:23 ngày 01/10/2018

HOW?

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

Khoa NTA viết 16:25 ngày 01/10/2018

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

HK boy viết 16:22 ngày 01/10/2018

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

Khoa NTA viết 16:24 ngày 01/10/2018

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á

rogp10 viết 16:17 ngày 01/10/2018

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

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

Phan Ngọc Khiêm viết 16:18 ngày 01/10/2018

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

Bài liên quan
0