user-0 提问: 求助贴，呜呜~~~~~~

回复:
user: user-1
content: 记得以前好像做过类似的东西， 没记错的的话汉字两个字节的ascii值的最高位都是1，楼主可以根据判断字符的asii码值对获取的字符串所有字符进行判断，应该可以

user: user-0
content: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h>  typedef struct lnode{//节点定义 读取数据是链表中的节点 		char key; 		int count; 		lnode *next; 	}*link;  link createnode(void){//创建节点 	link newnode=(lnode*)malloc(sizeof(lnode)); 	if(newnode!=NULL){ 		newnode->count=0; 		newnode->next=NULL; 	} 	return newnode; }  int main(){  	FILE*fp; 	char ch;   	if((fp=fopen("test.txt","rt"))==NULL){//打开文件 		printf("cannot open file!\n"); 		getch(); 		exit(1); 	} 	         bool flag; 	link head=NULL; 	link current=head;               while((ch=fgetc(fp))!=EOF){//统计概率 		flag=true; 		for(current=head;current!=NULL;current=current->next){ 			if(current->key==ch){ 				current->count++; 				flag=false; 				break; 			} 		} 			if(flag){ 				link newcode=createnode(); 				newcode->key=ch; 				newcode->count++; 				newcode->next=head; 				head=newcode; 			} 	putchar(ch); 	}   	    printf("\n"); 		printf("字符\t");         printf("次数\n"); 		 		int total=0;  	for(current=head;current!=NULL;current=current->next){//读出统计的字符和相应的次数； 		printf("字符%c\t",current->key); 		printf("频率%d\n",current->count); 		total++; 		}  这里只实现了英文文本的读取和存储，中英文混合的时候要怎么分辨出来，并且要存放在和英文字符统一的结构体里面呢？最好能给个代码，这问题纠结好久了。。。。呜呜~~~~

user: user-2
content: 做一下 汉字 和英文字符  的判断！

user: user-3
content: String Manipulation These routines operate on null-terminated single-byte character, wide-character, and multibyte-character strings. Use the buffer-manipulation routines, described in Buffer Manipulation, to work with character arrays that do not end with a null character.  String-Manipulation Routines  Routine Use  _mbscoll, _mbsicoll, _mbsncoll, _mbsnicoll Compare two multibyte-character strings using multibyte code page information (_mbsicoll and _mbsnicoll are case-insensitive)  _mbsdec, _strdec, _wcsdec Move string pointer back one character  _mbsinc, _strinc, _wcsinc Advance string pointer by one character  _mbslen Get number of multibyte characters in multibyte-character string; dependent upon OEM code page  _mbsnbcat Append, at most, first n bytes of one multibyte-character string to another  _mbsnbcmp Compare first n bytes of two multibyte-character strings  _mbsnbcnt Return number of multibyte-character bytes within supplied character count  _mbsnbcpy Copy n bytes of string  _mbsnbicmp Compare n bytes of two multibyte-character strings, ignoring case  _mbsnbset Set first n bytes of multibyte-character string to specified character  _mbsnccnt Return number of multibyte characters within supplied byte count  _mbsnextc, _strnextc, _wcsnextc Find next character in string  _mbsninc. _strninc, _wcsninc  Advance string pointer by n characters  _mbsspnp, _strspnp, _wcsspnp Return pointer to first character in given string that is not in another given string  _mbstrlen Get number of multibyte characters in multibyte-character string; locale-dependent  sprintf, _stprintf Write formatted data to a string  strcat, wcscat, _mbscat Append one string to another  strchr, wcschr, _mbschr Find first occurrence of specified character in string  strcmp, wcscmp, _mbscmp Compare two strings  strcoll, wcscoll, _stricoll, _wcsicoll, _strncoll, _wcsncoll, _strnicoll, _wcsnicoll Compare two strings using current locale code page information (_stricoll, _wcsicoll, _strnicoll, and _wcsnicoll are case-insensitive)  strcpy, wcscpy, _mbscpy Copy one string to another  strcspn, wcscspn, _mbscspn,  Find first occurrence of character from specified character set in string  _strdup, _wcsdup, _mbsdup Duplicate string  strerror Map error number to message string  _strerror Map user-defined error message to string  strftime, wcsftime Format date-and-time string  _stricmp, _wcsicmp, _mbsicmp Compare two strings without regard to case  strlen, wcslen, _mbslen, _mbstrlen Find length of string  _strlwr, _wcslwr, _mbslwr Convert string to lowercase  strncat, wcsncat, _mbsncat Append characters of string  strncmp, wcsncmp, _mbsncmp Compare characters of two strings  strncpy, wcsncpy, _mbsncpy Copy characters of one string to another  _strnicmp, _wcsnicmp, _mbsnicmp Compare characters of two strings without regard to case  _strnset, _wcsnset, _mbsnset Set first n characters of string to specified character  strpbrk, wcspbrk, _mbspbrk Find first occurrence of character from one string in another string  strrchr, wcsrchr,_mbsrchr Find last occurrence of given character in string  _strrev, _wcsrev,_mbsrev Reverse string  _strset, _wcsset, _mbsset Set all characters of string to specified character  strspn, wcsspn, _mbsspn Find first substring from one string in another string  strstr, wcsstr, _mbsstr Find first occurrence of specified string in another string  strtok, wcstok, _mbstok Find next token in string  _strupr, _wcsupr, _mbsupr Convert string to uppercase  strxfrm, wcsxfrm Transform string into collated form based on locale-specific information  vsprintf, _vstprint Write formatted output using a pointer to a list of arguments

user: user-3
content: Stream I/O These functions process data in different sizes and formats, from single characters to large data structures. They also provide buffering, which can improve performance. The default size of a stream buffer is 4K. These routines affect only buffers created by the run-time library routines, and have no effect on buffers created by the operating system.  Stream I/O Routines  Routine Use  clearerr Clear error indicator for stream  fclose Close stream  _fcloseall Close all open streams except stdin, stdout, and stderr  _fdopen, wfdopen Associate stream with handle to open file  feof Test for end of file on stream  ferror Test for error on stream  fflush Flush stream to buffer or storage device   fgetc, fgetwc Read character from stream (function versions of getc and getwc)  _fgetchar, _fgetwchar Read character from stdin (function versions of getchar and getwchar)  fgetpos Get position indicator of stream  fgets, fgetws Read string from stream  _fileno Get file handle associated with stream  _flushall Flush all streams to buffer or storage device  fopen, _wfopen Open stream  fprintf, fwprintf Write formatted data to stream  fputc, fputwc Write a character to a stream (function versions of putc and putwc)  _fputchar, _fputwchar Write character to stdout (function versions of putchar and putwchar)  fputs, fputws Write string to stream  fread Read unformatted data from stream  freopen, _wfreopen Reassign FILE stream pointer to new file or device  fscanf, fwscanf Read formatted data from stream  fseek Move file position to given location  fsetpos Set position indicator of stream  _fsopen, _wfsopen Open stream with file sharing  ftell Get current file position  fwrite Write unformatted data items to stream  getc, getwc Read character from stream (macro versions of fgetc and fgetwc)  getchar, getwchar Read character from stdin (macro versions of fgetchar and fgetwchar)  gets, getws Read line from stdin  _getw Read binary int from stream  printf, wprintf Write formatted data to stdout  putc, putwc Write character to a stream (macro versions of fputc and fputwc)  putchar, putwchar Write character to stdout (macro versions of fputchar and fputwchar)  puts, _putws Write line to stream  _putw Write binary int to stream  rewind Move file position to beginning of stream  _rmtmp Remove temporary files created by tmpfile  scanf, wscanf Read formatted data from stdin  setbuf Control stream buffering  _setmaxstdio Set a maximum for the number of simultaneously open files at the stream I/O level.   setvbuf Control stream buffering and buffer size  _snprintf, _snwprintf Write formatted data of specified length to string  sprintf, swprintf Write formatted data to string  sscanf, swscanf Read formatted data from string  _tempnam, _wtempnam Generate temporary filename in given directory  tmpfile Create temporary file  tmpnam, _wtmpnam Generate temporary filename  ungetc, ungetwc Push character back onto stream  vfprintf, vfwprintf  Write formatted data to stream  vprintf, vwprintf Write formatted data to stdout  _vsnprintf, _vsnwprintf Write formatted data of specified length to buffer  vsprintf, vswprintf Write formatted data to buffer    When a program begins execution, the startup code automatically opens several streams: standard input (pointed to by stdin), standard output (pointed to by stdout), and standard error (pointed to by stderr). These streams are directed to the console (keyboard and screen) by default. Use freopen to redirect stdin, stdout, or stderr to a disk file or a device.  Files opened using the stream routines are buffered by default. The stdout and stderr functions are flushed whenever they are full or, if you are writing to a character device, after each library call. If a program terminates abnormally, output buffers may not be flushed, resulting in loss of data. Use fflush or _flushall to ensure that the buffer associated with a specified file or all open buffers are flushed to the operating system, which can cache data before writing it to disk. The commit-to-disk feature ensures that the flushed buffer contents are not lost in the event of a system failure.   There are two ways to commit buffer contents to disk:   Link with the file COMMODE.OBJ to set a global commit flag. The default setting of the global flag is n, for “no-commit.”   Set the mode flag to c with fopen or _fdopen.  Any file specifically opened with either the c or the n flag behaves according to the flag, regardless of the state of the global commit/no-commit flag.  If your program does not explicitly close a stream, the stream is automatically closed when the program terminates. However, you should close a stream when your program finishes with it, as the number of streams that can be open at one time is limited. See _setmaxstdio for information on this limit.   Input can follow output directly only with an intervening call to fflush or to a file-positioning function (fseek, fsetpos, or rewind). Output can follow input without an intervening call to a file-positioning function if the input operation encounters the end of the file.