작은숲:위키노트/C 언어 예제/파일에서 문자 수 세기
보이기
<syntaxhighlight lang="c"> /**
* Copyright (c) 2001,2002 Yoon, Hyunho <hhyoon@kldp.org> * http://mooo.org * ---------------------------------------------------------------------- * * LICENSE * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
- include <stdio.h>
- include <stdlib.h>
- include <string.h>
- define NUM_ALPA ('Z' - 'A' + 1)
- define MAXLINE 256
int main(int argc, char *argv[]) { static int count[NUM_ALPA * 2] = { 0, };
unsigned int i;
char fn[MAXLINE], buffer[MAXLINE];
FILE *fp;
if (argc > 1)
strcpy(fn, argv[1]);
else
strcpy(fn, "data266-2.txt");
if ((fp = fopen(fn, "r")) == NULL) {
printf("Cannot open the file: %s\n", fn);
exit(0);
}
while (!feof(fp)) {
if (fgets(buffer, MAXLINE, fp) == NULL) break;
for (i = 0; i < strlen(buffer); i++) {
if (buffer[i] >= 'a' && buffer[i] <= 'z')
count[buffer[i] - 'a' + NUM_ALPA]++;
else if (buffer[i] >= 'A' && buffer[i] <= 'Z')
count[buffer[i] - 'A']++;
}
}
fclose(fp);
for (i = 0; i < NUM_ALPA * 2; i++) {
if (count[i]) {
if (i < NUM_ALPA)
printf("%c: %d\n", 'A' + i, count[i]);
else
printf("%c: %d\n", 'a' + i - NUM_ALPA, count[i]);
}
}
return 0;
}</source>