Huang.1 发表于 2019-12-7 10:57:49

求助关于用getch()输入汉字的问题

编写自定义字符串数输入函数

函数原型为:char *inputString(char *buffer, unsigned int bufferLen);

说明:入参buffer表示用于存储输入字符串的缓冲区,入参bufferLen表示该缓冲区的最大字节数。

          返回buffer首地址指针。

功能基本要求:

在windows操作系统下,使用codeblocks做为开发工具。函数实现过程中,只能使用getch()做为键盘的输入,不得使用scanf、gets之类的系统函数。以回车键结束输入,支持退格键,支持输入汉字。

调用示例:

    char buf;

    printf("%s", inputString(buf, 100));

jackz007 发表于 2019-12-7 17:04:33

#include <stdio.h>
#include <conio.h>

char * inputString(char *buffer, unsigned int bufferlen)
{
      int m                                                ;
      char c                                                 ;
      for(m = 0 ; (c = getch()) != '\r' && m < bufferlen - 1 ;) {
                if(c == 8) {
                        if(m > 0) {
                              if(buffer < 0) {
                                        printf("\b \b")      ;
                                        buffer = '0' ;
                              }
                              printf("\b \b")                ;
                              buffer = '0'         ;
                        }
                } else {
                        buffer = c                     ;
                        printf("%c" , c)                     ;
                }                              
      }
      buffer = '\0'                                       ;
      printf("\n")                                           ;
      return buffer                                          ;
}

main(void)
{
      char buffer                                       ;
      unsigned int bufferlen = 258                           ;
      printf("%s\n" , inputString(buffer , bufferlen))       ;
}
      编译、运行实况:
C:\Bin>g++ -o x x.c

C:\Bin>x
我爱鱼C我爱鱼C
我爱鱼C我爱鱼C

C:\Bin>
页: [1]
查看完整版本: 求助关于用getch()输入汉字的问题