C Scanf功能:在C语言中获取用户输入
获取用户输入与诸如游戏,实时系统和其他事件驱动的应用程序之类的交互式应用程序是一体的。此输入决定执行系统的特定功能。在C语言中,具有命令行界面的任何程序或应用程序都使用“SCANF”方法为此目的。
什么是c scanf功能?
C'SCANF'方法是位于“Stdio”库中的函数。它用于读取包括来自标准输入(STDIN)的字符,字符串和数字数据的格式输入,这通常是键盘。虽然Scanf在更简单的程序中是一个非常有用的功能,但它没有有效处理人类的输入错误。这使得C'SCANF'功能几乎不可靠,因此应该仅用于实现可靠性不是优先级的简单程序。
C Scanf功能语法
#includeint scanf(const char *格式,变量,......);
为了使用C Scanf,源代码文件中需要库'stdio'。您可以从C'Scanf'函数的语法中看到用户的输入格式化了“格式”参数。有效格式被分配给参数'变量'。
C'SCANF'函数的“格式”参数是C字符串,包括以下一个或多个组件:
- 格式指定符。
- 空白字符。
- 非空白字符。
在成功执行C'SCANF'函数时,返回从输入读取的字符总数。如果失败,则函数返回负值或“eof”。
C Scanf功能格式指定符
%[*] [宽度] [lengital_modifiers] type_specifier
C'SCANF'功能格式是上述参数的组合。每个说明符在百分比(%)符号之前。上述格式说明符的简要说明如下:
- “*”符号是可选的说明符,该说明符指定从“stdin”读取用户输入,但忽略且未保存。
- '宽度'是一个可选的说明符,指示可以从'stdin'读取的总输入字符的最大数字。
- 'lengite_modifiers'的prackery是另一个可选项目,用于指示用户输入的确切类型,例如,不存在显式转换字母的Long'L'。
- 'type_specifier'属性是用于指示从“stdin”读取的实际数据类型的转换字母。用户输入被转换为提供的数据类型并分配给相应的变量。
C Scanf功能类型说明符
C'SCANF'功能类型说明符识别输入的类型。以下是最重要且常用的类型说明符。
- 字母'c'显示转换的输入是“char *”类型。它用于表示一个字符。如果用户输入的长度大于1,则仅从所有输入读取第一个字符。
代码片段:
Char C;SCANF(“%C”,&C);//测试printf(“第一个字符为%c \ n”,c);//第一个字符是t
- 字母's'代表一系列'char *'。它将输入转换为字符数组并忽略空格后的字符。
代码片段:
Char FirstName [50];scanf(“%s”,firstName);// John Doe Printf(“提供的名称为%s \ n”,firstname);//约翰//字母'd'和'i'表示十进制整数。INT I = 0;Scanf(“%d”,&i);// - 21 printf(“输入的数字为%d \ n”,i);// - 21 //字母'a','e','f'和'g'是float和double的输入转换字母。float x;scanf(“%f”,&x); //21.12 printf ( "You are %f years old.\n", x ); //21.120000 // Letter ‘x’ takes a user input in the form of hexadecimal integer. unsigned int i = 0; scanf ( "%x", &i); //A printf ( "Decimal value is %i \n", i ); //10
c scanf函数额外的参数
C'SCANF'函数中的其他参数取决于“格式”字符串中的格式说明符的数量,因为每个字符串都保存了一部分输入。建议使用相同数量的格式说明符和函数中的变量,否则该功能可能会返回模糊结果。以下代码段说明了多种格式指定符的使用:
代码片段:
unsigned int trace = 0;INT ID;CHAR名称[50];printf(“输入名称,年龄,ID和安全码\ n”);scanf(“%[^ \ n]%2d%i%* d”,名称和年龄,&ID);printf(“用户名是%s \ n”,name);Printf(“%i。\ n”,年龄);printf(“带有id =%i。\ n”,ID);
输入 | 输出 |
John Doe2277999. | 用户名是John Doeage为22. id = 77。 |
C Scanf功能变体'SSCANF'
int scanf(const char * inputstr,const char *格式,变量,......);
C'CANF'和'SSCANF'功能在功能中类似。两者之间的唯一区别是“Scanf”读取从标准输入的输入。相反,'scanf'读取从字符串的输入,该字符串将作为函数的第一个参数传递。
C SCANF功能替代
C'SCANF'功能无法检测缓冲区溢出。因此,当提供的缓冲区达到其限制时,额外的输入字符会覆盖可能已经占用的内存。以下示例演示了这一概念:
char nameSpace [5];scanf(“%[^ \ n]”,namewithspace);// John Doe Printf(“全名是%s \ n”,namewithspace);// John Doe.
在上面的代码片段中,缓冲区大小为“5”,但用户输入的长度超过'5'溢出该缓冲区。“FGETS”函数的形式存在更好的替代方案,其从包括标准输入的指定流读取一行。
结论
ScanF是C语言最基本的功能之一,用于执行基本输入操作,例如从命令行应用程序中获取字符串输入。为了进一步研究C语言及其核心功能,您可以在Udemy.com上以极其合理的价格占据一些基本C语言课程。一个这样的课程可以在Udemy.com找到。