forked from rpms/glibc
		
	
		
			
				
	
	
		
			358 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			358 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <wchar.h>
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| #include <locale.h>
 | |
| 
 | |
| wchar_t *numbers[301] = {
 | |
| 	L"zero\n",
 | |
| 	L"one\n",
 | |
| 	L"two\n",
 | |
| 	L"three\n",
 | |
| 	L"four\n",
 | |
| 	L"five\n",
 | |
| 	L"six\n",
 | |
| 	L"seven\n",
 | |
| 	L"eight\n",
 | |
| 	L"nine\n",
 | |
| 	L"ten\n",
 | |
| 	L"eleven\n",
 | |
| 	L"twelve\n",
 | |
| 	L"thirteen\n",
 | |
| 	L"fourteen\n",
 | |
| 	L"fifteen\n",
 | |
| 	L"sixteen\n",
 | |
| 	L"seventeen\n",
 | |
| 	L"eighteen\n",
 | |
| 	L"nineteen\n",
 | |
| 	L"twenty\n",
 | |
| 	L"twenty one\n",
 | |
| 	L"twenty two\n",
 | |
| 	L"twenty three\n",
 | |
| 	L"twenty four\n",
 | |
| 	L"twenty five\n",
 | |
| 	L"twenty six\n",
 | |
| 	L"twenty seven\n",
 | |
| 	L"twenty eight\n",
 | |
| 	L"twenty nine\n",
 | |
| 	L"thirty\n",
 | |
| 	L"thirty one\n",
 | |
| 	L"thirty two\n",
 | |
| 	L"thirty three\n",
 | |
| 	L"thirty four\n",
 | |
| 	L"thirty five\n",
 | |
| 	L"thirty six\n",
 | |
| 	L"thirty seven\n",
 | |
| 	L"thirty eight\n",
 | |
| 	L"thirty nine\n",
 | |
| 	L"forty\n",
 | |
| 	L"forty one\n",
 | |
| 	L"forty two\n",
 | |
| 	L"forty three\n",
 | |
| 	L"forty four\n",
 | |
| 	L"forty five\n",
 | |
| 	L"forty six\n",
 | |
| 	L"forty seven\n",
 | |
| 	L"forty eight\n",
 | |
| 	L"forty nine\n",
 | |
| 	L"fifty\n",
 | |
| 	L"fifty one\n",
 | |
| 	L"fifty two\n",
 | |
| 	L"fifty three\n",
 | |
| 	L"fifty four\n",
 | |
| 	L"fifty five\n",
 | |
| 	L"fifty six\n",
 | |
| 	L"fifty seven\n",
 | |
| 	L"fifty eight\n",
 | |
| 	L"fifty nine\n",
 | |
| 	L"sixty\n",
 | |
| 	L"sixty one\n",
 | |
| 	L"sixty two\n",
 | |
| 	L"sixty three\n",
 | |
| 	L"sixty four\n",
 | |
| 	L"sixty five\n",
 | |
| 	L"sixty six\n",
 | |
| 	L"sixty seven\n",
 | |
| 	L"sixty eight\n",
 | |
| 	L"sixty nine\n",
 | |
| 	L"seventy\n",
 | |
| 	L"seventy one\n",
 | |
| 	L"seventy two\n",
 | |
| 	L"seventy three\n",
 | |
| 	L"seventy four\n",
 | |
| 	L"seventy five\n",
 | |
| 	L"seventy six\n",
 | |
| 	L"seventy seven\n",
 | |
| 	L"seventy eight\n",
 | |
| 	L"seventy nine\n",
 | |
| 	L"eighty\n",
 | |
| 	L"eighty one\n",
 | |
| 	L"eighty two\n",
 | |
| 	L"eighty three\n",
 | |
| 	L"eighty four\n",
 | |
| 	L"eighty five\n",
 | |
| 	L"eighty six\n",
 | |
| 	L"eighty seven\n",
 | |
| 	L"eighty eight\n",
 | |
| 	L"eighty nine\n",
 | |
| 	L"ninety\n",
 | |
| 	L"ninety one\n",
 | |
| 	L"ninety two\n",
 | |
| 	L"ninety three\n",
 | |
| 	L"ninety four\n",
 | |
| 	L"ninety five\n",
 | |
| 	L"ninety six\n",
 | |
| 	L"ninety seven\n",
 | |
| 	L"ninety eight\n",
 | |
| 	L"ninety nine\n",
 | |
| 	L"one hundred\n",
 | |
| 	L"one hundred and one\n",
 | |
| 	L"one hundred and two\n",
 | |
| 	L"one hundred and three\n",
 | |
| 	L"one hundred and four\n",
 | |
| 	L"one hundred and five\n",
 | |
| 	L"one hundred and six\n",
 | |
| 	L"one hundred and seven\n",
 | |
| 	L"one hundred and eight\n",
 | |
| 	L"one hundred and nine\n",
 | |
| 	L"one hundred and ten\n",
 | |
| 	L"one hundred and eleven\n",
 | |
| 	L"one hundred and twelve\n",
 | |
| 	L"one hundred and thirteen\n",
 | |
| 	L"one hundred and fourteen\n",
 | |
| 	L"one hundred and fifteen\n",
 | |
| 	L"one hundred and sixteen\n",
 | |
| 	L"one hundred and seventeen\n",
 | |
| 	L"one hundred and eighteen\n",
 | |
| 	L"one hundred and nineteen\n",
 | |
| 	L"one hundred and twenty\n",
 | |
| 	L"one hundred and twenty one\n",
 | |
| 	L"one hundred and twenty two\n",
 | |
| 	L"one hundred and twenty three\n",
 | |
| 	L"one hundred and twenty four\n",
 | |
| 	L"one hundred and twenty five\n",
 | |
| 	L"one hundred and twenty six\n",
 | |
| 	L"one hundred and twenty seven\n",
 | |
| 	L"one hundred and twenty eight\n",
 | |
| 	L"one hundred and twenty nine\n",
 | |
| 	L"one hundred and thirty\n",
 | |
| 	L"one hundred and thirty one\n",
 | |
| 	L"one hundred and thirty two\n",
 | |
| 	L"one hundred and thirty three\n",
 | |
| 	L"one hundred and thirty four\n",
 | |
| 	L"one hundred and thirty five\n",
 | |
| 	L"one hundred and thirty six\n",
 | |
| 	L"one hundred and thirty seven\n",
 | |
| 	L"one hundred and thirty eight\n",
 | |
| 	L"one hundred and thirty nine\n",
 | |
| 	L"one hundred and forty\n",
 | |
| 	L"one hundred and forty one\n",
 | |
| 	L"one hundred and forty two\n",
 | |
| 	L"one hundred and forty three\n",
 | |
| 	L"one hundred and forty four\n",
 | |
| 	L"one hundred and forty five\n",
 | |
| 	L"one hundred and forty six\n",
 | |
| 	L"one hundred and forty seven\n",
 | |
| 	L"one hundred and forty eight\n",
 | |
| 	L"one hundred and forty nine\n",
 | |
| 	L"one hundred and fifty\n",
 | |
| 	L"one hundred and fifty one\n",
 | |
| 	L"one hundred and fifty two\n",
 | |
| 	L"one hundred and fifty three\n",
 | |
| 	L"one hundred and fifty four\n",
 | |
| 	L"one hundred and fifty five\n",
 | |
| 	L"one hundred and fifty six\n",
 | |
| 	L"one hundred and fifty seven\n",
 | |
| 	L"one hundred and fifty eight\n",
 | |
| 	L"one hundred and fifty nine\n",
 | |
| 	L"one hundred and sixty\n",
 | |
| 	L"one hundred and sixty one\n",
 | |
| 	L"one hundred and sixty two\n",
 | |
| 	L"one hundred and sixty three\n",
 | |
| 	L"one hundred and sixty four\n",
 | |
| 	L"one hundred and sixty five\n",
 | |
| 	L"one hundred and sixty six\n",
 | |
| 	L"one hundred and sixty seven\n",
 | |
| 	L"one hundred and sixty eight\n",
 | |
| 	L"one hundred and sixty nine\n",
 | |
| 	L"one hundred and seventy\n",
 | |
| 	L"one hundred and seventy one\n",
 | |
| 	L"one hundred and seventy two\n",
 | |
| 	L"one hundred and seventy three\n",
 | |
| 	L"one hundred and seventy four\n",
 | |
| 	L"one hundred and seventy five\n",
 | |
| 	L"one hundred and seventy six\n",
 | |
| 	L"one hundred and seventy seven\n",
 | |
| 	L"one hundred and seventy eight\n",
 | |
| 	L"one hundred and seventy nine\n",
 | |
| 	L"one hundred and eighty\n",
 | |
| 	L"one hundred and eighty one\n",
 | |
| 	L"one hundred and eighty two\n",
 | |
| 	L"one hundred and eighty three\n",
 | |
| 	L"one hundred and eighty four\n",
 | |
| 	L"one hundred and eighty five\n",
 | |
| 	L"one hundred and eighty six\n",
 | |
| 	L"one hundred and eighty seven\n",
 | |
| 	L"one hundred and eighty eight\n",
 | |
| 	L"one hundred and eighty nine\n",
 | |
| 	L"one hundred and ninety\n",
 | |
| 	L"one hundred and ninety one\n",
 | |
| 	L"one hundred and ninety two\n",
 | |
| 	L"one hundred and ninety three\n",
 | |
| 	L"one hundred and ninety four\n",
 | |
| 	L"one hundred and ninety five\n",
 | |
| 	L"one hundred and ninety six\n",
 | |
| 	L"one hundred and ninety seven\n",
 | |
| 	L"one hundred and ninety eight\n",
 | |
| 	L"one hundred and ninety nine\n",
 | |
| 	L"two hundred\n",
 | |
| 	L"two hundred and one\n",
 | |
| 	L"two hundred and two\n",
 | |
| 	L"two hundred and three\n",
 | |
| 	L"two hundred and four\n",
 | |
| 	L"two hundred and five\n",
 | |
| 	L"two hundred and six\n",
 | |
| 	L"two hundred and seven\n",
 | |
| 	L"two hundred and eight\n",
 | |
| 	L"two hundred and nine\n",
 | |
| 	L"two hundred and ten\n",
 | |
| 	L"two hundred and eleven\n",
 | |
| 	L"two hundred and twelve\n",
 | |
| 	L"two hundred and thirteen\n",
 | |
| 	L"two hundred and fourteen\n",
 | |
| 	L"two hundred and fifteen\n",
 | |
| 	L"two hundred and sixteen\n",
 | |
| 	L"two hundred and seventeen\n",
 | |
| 	L"two hundred and eighteen\n",
 | |
| 	L"two hundred and nineteen\n",
 | |
| 	L"two hundred and twenty\n",
 | |
| 	L"two hundred and twenty one\n",
 | |
| 	L"two hundred and twenty two\n",
 | |
| 	L"two hundred and twenty three\n",
 | |
| 	L"two hundred and twenty four\n",
 | |
| 	L"two hundred and twenty five\n",
 | |
| 	L"two hundred and twenty six\n",
 | |
| 	L"two hundred and twenty seven\n",
 | |
| 	L"two hundred and twenty eight\n",
 | |
| 	L"two hundred and twenty nine\n",
 | |
| 	L"two hundred and thirty\n",
 | |
| 	L"two hundred and thirty one\n",
 | |
| 	L"two hundred and thirty two\n",
 | |
| 	L"two hundred and thirty three\n",
 | |
| 	L"two hundred and thirty four\n",
 | |
| 	L"two hundred and thirty five\n",
 | |
| 	L"two hundred and thirty six\n",
 | |
| 	L"two hundred and thirty seven\n",
 | |
| 	L"two hundred and thirty eight\n",
 | |
| 	L"two hundred and thirty nine\n",
 | |
| 	L"two hundred and forty\n",
 | |
| 	L"two hundred and forty one\n",
 | |
| 	L"two hundred and forty two\n",
 | |
| 	L"two hundred and forty three\n",
 | |
| 	L"two hundred and forty four\n",
 | |
| 	L"two hundred and forty five\n",
 | |
| 	L"two hundred and forty six\n",
 | |
| 	L"two hundred and forty seven\n",
 | |
| 	L"two hundred and forty eight\n",
 | |
| 	L"two hundred and forty nine\n",
 | |
| 	L"two hundred and fifty\n",
 | |
| 	L"two hundred and fifty one\n",
 | |
| 	L"two hundred and fifty two\n",
 | |
| 	L"two hundred and fifty three\n",
 | |
| 	L"two hundred and fifty four\n",
 | |
| 	L"two hundred and fifty five\n",
 | |
| 	L"two hundred and fifty six\n",
 | |
| 	L"two hundred and fifty seven\n",
 | |
| 	L"two hundred and fifty eight\n",
 | |
| 	L"two hundred and fifty nine\n",
 | |
| 	L"two hundred and sixty\n",
 | |
| 	L"two hundred and sixty one\n",
 | |
| 	L"two hundred and sixty two\n",
 | |
| 	L"two hundred and sixty three\n",
 | |
| 	L"two hundred and sixty four\n",
 | |
| 	L"two hundred and sixty five\n",
 | |
| 	L"two hundred and sixty six\n",
 | |
| 	L"two hundred and sixty seven\n",
 | |
| 	L"two hundred and sixty eight\n",
 | |
| 	L"two hundred and sixty nine\n",
 | |
| 	L"two hundred and seventy\n",
 | |
| 	L"two hundred and seventy one\n",
 | |
| 	L"two hundred and seventy two\n",
 | |
| 	L"two hundred and seventy three\n",
 | |
| 	L"two hundred and seventy four\n",
 | |
| 	L"two hundred and seventy five\n",
 | |
| 	L"two hundred and seventy six\n",
 | |
| 	L"two hundred and seventy seven\n",
 | |
| 	L"two hundred and seventy eight\n",
 | |
| 	L"two hundred and seventy nine\n",
 | |
| 	L"two hundred and eighty\n",
 | |
| 	L"two hundred and eighty one\n",
 | |
| 	L"two hundred and eighty two\n",
 | |
| 	L"two hundred and eighty three\n",
 | |
| 	L"two hundred and eighty four\n",
 | |
| 	L"two hundred and eighty five\n",
 | |
| 	L"two hundred and eighty six\n",
 | |
| 	L"two hundred and eighty seven\n",
 | |
| 	L"two hundred and eighty eight\n",
 | |
| 	L"two hundred and eighty nine\n",
 | |
| 	L"two hundred and ninety\n",
 | |
| 	L"two hundred and ninety one\n",
 | |
| 	L"two hundred and ninety two\n",
 | |
| 	L"two hundred and ninety three\n",
 | |
| 	L"two hundred and ninety four\n",
 | |
| 	L"two hundred and ninety five\n",
 | |
| 	L"two hundred and ninety six\n",
 | |
| 	L"two hundred and ninety seven\n",
 | |
| 	L"two hundred and ninety eight\n",
 | |
| 	L"two hundred and ninety nine\n",
 | |
| 	L"three hundred\n"
 | |
| };
 | |
| 
 | |
| long offset[301];
 | |
| 
 | |
| int main(int argc, char **argv)
 | |
| {
 | |
| 	int i, n;
 | |
| 	FILE *fp;
 | |
| 	char *s, buf[256];
 | |
| 	wchar_t wbuf[64];
 | |
| 
 | |
| #ifdef UTF8
 | |
| 	setlocale(LC_ALL, "en_US.utf8");
 | |
| #else
 | |
| 	setlocale(LC_ALL, "en_US");
 | |
| #endif
 | |
| 	fp = fopen("output.txt", "w+");
 | |
| 	if (fp == NULL) {
 | |
| 		perror("fopen");
 | |
| 		exit(1);
 | |
| 	}
 | |
| 	for (i = 0; i <= 300; i++) {
 | |
| 		offset[i] = ftell(fp);
 | |
| 		if (fputws(numbers[i], fp) == -1) {
 | |
| 			perror("fputws");
 | |
| 			exit(1);
 | |
| 		}
 | |
| 	}
 | |
| #ifdef TESTREAD
 | |
| 	fclose(fp);
 | |
| 	fp = fopen("output.txt", "r");
 | |
| #endif
 | |
| 	for ( ; ; ) {
 | |
| 		s = fgets(buf, 256, stdin);
 | |
| 		n = atoi(buf);
 | |
| 		if (s == NULL || n < 0 || n > 300)
 | |
| 			break;
 | |
| 		if (fseek(fp, offset[n], SEEK_SET) == -1) {
 | |
| 			perror("fseek");
 | |
| 			exit(1);
 | |
| 		}
 | |
| 		printf("%d: (%ld->%ld) ", n, offset[n], ftell(fp));
 | |
| 		fgetws(wbuf, 64, fp);
 | |
| 		wcstombs(buf, wbuf, 256);
 | |
| 		printf("%s", buf);
 | |
| 	}
 | |
| 	fclose(fp);
 | |
| 	return 0;
 | |
| }
 |