scanf字符串_scanf字符串数组

scanf字符串

在scanf和printf函数的控制字符串中含有不能识别的字符回怎么?

  • 完整问题:在scanf和printf函数的控制字符串中含有不能识别的字符回怎么样
  • 好评回答:程序执行到不能识别的地方就停止
  • "%[^n]"真的可以用scanf输入一个带空格的字符串吗?

  • 完整问题:
  • 好评回答:确实可以!而且”%[^n]”还可以由你自己选择结束字符。这个%[]用的人不多,大家都只知道%s之类的,所以这个东西也被忽视了。。。下面是MSDN的scanf格式参数的允许情况,注意%[]在最后呢~Conversion Argument Conversion Specifier Type Function Base %c char x[] %lc wchar_t x[] %d int *x strtol 10 %hd short *x strtol 10 %ld long *x strtol 10 %e float *x strtod 10 %le double *x strtod 10 %Le long double *x strtod 10 %E float *x strtod 10 %lE double *x strtod 10 %LE long double *x strtod 10 %f float *x strtod 10 %lf double *x strtod 10 %Lf long double *x strtod 10 %g float *x strtod 10 %lg double *x strtod 10 %Lg long double *x strtod 10 %G float *x strtod 10 %lG double *x strtod 10 %LG long double *x strtod 10 %i int *x strtol 0 %hi short *x strtol 0 %li long *x strtol 0 %n int *x %hn short *x %ln long *x %o unsigned int *x strtoul 8 %ho unsigned short *x strtoul 8 %lo unsigned long *x strtoul 8 %p void **x %s char x[] %ls wchar_t x[] %u unsigned int *x strtoul 10 %hu unsigned short *x strtoul 10 %lu unsigned long *x strtoul 10 %x unsigned int *x strtoul 16 %hx unsigned short *x strtoul 16 %lx unsigned long *x strtoul 16 %X unsigned int *x strtoul 16 %hX unsigned short *x strtoul 16 %lX unsigned long *x strtoul 16 %[。。。] char x[]%l[。。。] wchar_t x[] %% none。
  • "%[^n]"真的可以用scanf输入一个带空格的字符串吗?

  • 完整问题:”%[^n]”真的可以用scanf输入一个带空格的字符串吗?
  • 好评回答:确实可以!而且”%[^n]”还可以由你自己选择结束字符。这个%[]用的人不多,大家都只知道%s之类的,所以这个东西也被忽视了。。。下面是MSDN的scanf格式参数的允许情况,注意%[]在最后呢~Conversion Argument Conversion Specifier Type Function Base %c char x[] %lc wchar_t x[] %d int *x strtol 10 %hd short *x strtol 10 %ld long *x strtol 10 %e float *x strtod 10 %le double *x strtod 10 %Le long double *x strtod 10 %E float *x strtod 10 %lE double *x strtod 10 %LE long double *x strtod 10 %f float *x strtod 10 %lf double *x strtod 10 %Lf long double *x strtod 10 %g float *x strtod 10 %lg double *x strtod 10 %Lg long double *x strtod 10 %G float *x strtod 10 %lG double *x strtod 10 %LG long double *x strtod 10 %i int *x strtol 0 %hi short *x strtol 0 %li long *x strtol 0 %n int *x %hn short *x %ln long *x %o unsigned int *x strtoul 8 %ho unsigned short *x strtoul 8 %lo unsigned long *x strtoul 8 %p void **x %s char x[] %ls wchar_t x[] %u unsigned int *x strtoul 10 %hu unsigned short *x strtoul 10 %lu unsigned long *x strtoul 10 %x unsigned int *x strtoul 16 %hx unsigned short *x strtoul 16 %lx unsigned long *x strtoul 16 %X unsigned int *x strtoul 16 %hX unsigned short *x strtoul 16 %lX unsigned long *x strtoul 16 %[。。。] char x[]%l[。。。] wchar_t x[] %% none。
  • "%[^n]"真的可以用scanf输入一个带空格的字符串吗?

  • 完整问题:”%[^n]”真的可以用scanf输入一个带空格的字符串吗?”%[^n]”真的可以用scanf输入一个带空格的字符串吗?
  • 好评回答:确实可以!而且”%[^n]”还可以由你自己选择结束字符。这个%[]用的人不多,大家都只知道%s之类的,所以这个东西也被忽视了。。。下面是MSDN的scanf格式参数的允许情况,注意%[]在最后呢~Conversion Argument Conversion Specifier Type Function Base %c char x[] %lc wchar_t x[] %d int *x strtol 10 %hd short *x strtol 10 %ld long *x strtol 10 %e float *x strtod 10 %le double *x strtod 10 %Le long double *x strtod 10 %E float *x strtod 10 %lE double *x strtod 10 %LE long double *x strtod 10 %f float *x strtod 10 %lf double *x strtod 10 %Lf long double *x strtod 10 %g float *x strtod 10 %lg double *x strtod 10 %Lg long double *x strtod 10 %G float *x strtod 10 %lG double *x strtod 10 %LG long double *x strtod 10 %i int *x strtol 0 %hi short *x strtol 0 %li long *x strtol 0 %n int *x %hn short *x %ln long *x %o unsigned int *x strtoul 8 %ho unsigned short *x strtoul 8 %lo unsigned long *x strtoul 8 %p void **x %s char x[] %ls wchar_t x[] %u unsigned int *x strtoul 10 %hu unsigned short *x strtoul 10 %lu unsigned long *x strtoul 10 %x unsigned int *x strtoul 16 %hx unsigned short *x strtoul 16 %lx unsigned long *x strtoul 16 %X unsigned int *x strtoul 16 %hX unsigned short *x strtoul 16 %lX unsigned long *x strtoul 16 %[。。。] char x[]%l[。。。] wchar_t x[] %% none。
  • 在scanf和printf函数的控制字符串中含有不能识别的字符回怎么?

  • 完整问题:在scanf和printf函数的控制字符串中含有不能识别的字符回怎么样
  • 好评回答:程序执行到不能识别的地方就停止
  • c语言输入scanf("%1[1234]d%*c", &choice);这是什么意思,那个格式字符串?

  • 完整问题:
  • 好评回答:只接收1、2、3、4四种字符,每次只接收一个,然后跳过一个字符。比如当输入12345678,则choice只接收1。如果开头不是1、2、3、4,则什么都不接收。至于这么做想达到什么逻辑目的,没有代码说不上来。 %1[1234]是一个控制符,%后面的1是说只接收一个字符,[1234]意思是只接收1、2、3、4四个字符组成的字符序列。合起来意思就是只接收1、2、3、4四个字符中的任何一个赋给对应的变量choice。如果输入的不是1、2、3、4这四个字符,则按出错处理,不赋给应的变量choice。后面%*c是一个控制符,意思是跳过一个字符,比如连写两行或在循环中scanf(“%1[1234]d%*c”, &choice);,输入12341234,那么第一行接收1,第二行接收3,2被跳过去了(实质是接收了但不赋给任何变量)。关于那个d,它夹在两个控制符之间,本来按scanf格式化控制符的规则,之间夹了什么字符就在输入时输入这个字符,可这里d后是跳过控制符,所以有了d,再按如上写两行或循环测试时,跳过的刚好是等待输入的d,就不会第一行接收1,第二行接收3……了,而是第一行接收1,第二行接收2,第三行接收3……——不知我说清楚了没有……。
  • 版权声明