user-0 提问: 关于char如何设置最大值

回复:
user: user-1
content: 建议将问题描述的更清晰一些，你是想设定char数组的长度还是char类型数据的长度？ 如果要设定char类型数组的长度，可以考虑使用malloc/realloc，根据需要动态改变数组的大小。 如果是要设定char类型数据的长度，可以直接用char类型的返回来约束。

user: user-2
content: /STACK   (Stack Allocations) Home |  Overview |  How Do I |  Linker Options  The Stack Allocations (/STACK:reserve[,commit]) option sets the size of the stack in bytes.   To find this option in the development environment, click Settings on the Project menu. Then click the Link tab, and click Output in the Category box. The Reserve text box (or in the reserve argument on the command line) specifies the total stack allocation in virtual memory. The default stack size is 1 MB. The linker rounds up the specified value to the nearest 4 bytes.  The optional value specified in the Commit text box (or in the commit argument on the command line) is subject to interpretation by the operating system. In Windows NT, it specifies the amount of physical memory to allocate at a time. Committed virtual memory causes space to be reserved in the paging file. A higher commit value saves time when the application needs more stack space, but increases the memory requirements and possibly the startup time.  Specify the reserve and commit values in decimal or C-language notation.  Another way to set the size of the stack is with the STACKSIZE statement in a module-definition (.DEF) file. STACKSIZE overrides the Stack Allocations (/STACK) option if both are specified. You can change the stack after the .EXE file is built by using the EDITBIN tool.

user: user-3
content: CHAR_MAX

user: user-4
content: 不知道这样的目的意欲何为

user: user-5
content: char可取的最大值可以用宏CHAR_MAX，需包含头文件limit.h

user: user-6
content: # include <stdio.h>//int char 输入容易出问题 下面的代码可以解决这个问题 # include <conio.h> # define N 10  //如果要录入X个字节则 N=X int user_password(char *A,int min,int max,int F);//直到用户输入的字符串长度在[min,max]之间时 函数结束 返回字符串A的长度 int main() {     char A[N+1],B[2*N+1];     printf("用户名:");     user_password(A,2,N,0);     printf("密  码:");     user_password(B,6,2*N,1);     printf("用户名:");     puts(A);     printf("密  码:");     puts(B);     return 0; } int user_password(char *A,int min,int max,int F)//F=0录入密码 否则 录入 用户名 {     int B,C,D;     char S[][7]={"用户名","密码"};     do     {         B=max+printf("[");for(C=1; C<B; C++)printf(" ");printf("]");         while(B--)printf("\b");         B=0;         while((C=getch())!='\r')         if(C>='0'&&C<='9'||C>='a'&&C<='z'||C>='A'&&C<='Z'||C=='_'||C==8)             {             if(C!=8&&B<max)             {                 if(F)printf("*");//密码                 else printf("%c",C);//用户名                 A[B++]=C;             }             else if(C==8&&B>0)             {                 printf("\b \b");                 B--;             }             else if(B>=max)             {                 D=printf("]%s长度:[%d,%d]!",S[F],min,max);                 for(C=0; C<60000000; C++);                 while(D-->1)printf("\b \b");                 printf("\b");             }         }         A[B]=0;         if(B<min)         {             for(C=B; C<max; C++)printf(" ");             D=max+printf("]%s长度:[%d,%d]!",S[F],min,max);             for(C=0; C<60000000; C++);             while(D--)printf("\b \b");             printf("\b");         }     }while(B<min);     printf("\n");     return B; }  这一个你也试试看，写的有些粗糙。。。

user: user-6
content: 。。。这样不是很浪费内存吗？ 设置为最大的目的 是防止 用户输入字符串输入的过多吗？ 如果是这样，你看看这个gainchar函数能不能帮到你，你想让用户输入多少字符 用户就输入多少字符。 这个输入字符串的代码可以防止用户输入过多的字符导致数组超界：  # include <stdio.h> # include <time.h> # include <stdlib.h> # define N 10  //如果要录入X个字节则 N=X int gainchar(char A[],int min,int max);//直到用户输入的字符串长度在[min,max]之间时 函数结束 返回字符串A的长度 int main(){     char A[N+1];//最后一位存'\0'     int L,min,max;     srand(time(NULL));     do{     min=rand()%N;     max=min+rand()%(N-min);     printf("请输入字符串[%d,%d]:",min,max);     gainchar(A,min,max);     printf("字符串：%s\n",A);     }while(1);     return 0; } int gainchar(char *A,int min,int max)//长度在[min,max]  <闭区间>  之间时 函数结束 返回字符串A的长度 {     int B,C;  do{         A[max]=B=C=0;         while((A[B++]=getchar())!='\n'&&B<max);         if(A[B-1]!='\n')while(getchar()!='\n'&&++C);         else A[--B]=0;     if(C||B&&B<min)        printf("您录入的字符串长度:%d字节\n只录入(%d--%d)个字节!\n",B+C,min,max);     }while(C||B<min);     return B; }  上面用了随机数 是做测试用的 。

user: user-7
content: 忘了这里是C语言。那你就只好用malloc和free了。

user: user-7
content: 你这样定义必须设置固定的值。要想不固定，换用new char[变量]或者vector<char>