반응형
코드를 보기 전에: 분명 이 글을 찾아온 사람중의 절반은 EOF를 해결하지 못해서 왔다고 생각이 된다.
반복문에서 EOF이 정상적으로 작동되게 할려면, 조건문의 모든 조건들이 아스키 코드로 나와 있어야 한다.
코드를 보면서 추가 설명 하겠다.
*숫자 0과 9 아스키 코드로 표현해야 한다.
0과 9로 표현하면 컴파일 에러.
1
2
3
4
5
6
7
8
9
10
11
|
for (int b = 0; b < size; b++)
{
if (s[b] == 32) // 띄어쓰기도 아스키 코드로 표현해야 EOF이 정상적으로 작동한다.
a4++;
if (s[b] >= 47 && s[b] <= 58) // 숫자 0~9
a3++;
if (s[b] >= 65 && s[b] <= 90) // 알파벳 대문자 A ~ Z
a2++;
if (s[b] >= 97 && s[b] <= 122) // 알파벳 소문자 a ~ z
a1++;
}
|
cs |
Fullcode
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <stdio.h>
#include <string.h>
int main()
{
char s[101];
int a1, a2, a3, a4;
int size;
while (gets(s) != '\0') { // EOF이 나오면 반복문 중지
size = strlen(s);
a1 = 0, a2 = 0, a3 = 0, a4 = 0;
for (int b = 0; b < size; b++)
{
if (s[b] == 32) // 띄어쓰기도 아스키 코드로 표현해야 EOF이 정상적으로 작동한다.
a4++;
if (s[b] >= 47 && s[b] <= 58) // 숫자 0~9
a3++;
if (s[b] >= 65 && s[b] <= 90) // 알파벳 대문자 A ~ Z
a2++;
if (s[b] >= 97 && s[b] <= 122) // 알파벳 소문자 a ~ z
a1++;
}printf("%d %d %d %d\n", a1, a2, a3, a4);
}
}
|
cs |
반응형