c语言的空格问题
2014-10-23 09:05
197 查看
c语言中的#define、typedef、main函数等等,会遇到多个空格,或者回车,或者其他不可见字符,为什么可以正常运行呢?系统是怎样判断后面的其他字符是无效字符?
比如typedef struct \t A B;
Format Specification Fields: scanf and wscanf Functions
A format specification has the following form:
%[*] [width] [{h | l | I64 | L}]type
The format argument specifies the interpretation of the input and can contain one or more of the following:
White-space characters: blank (' '); tab ('\t'); or newline ('\n'). A white-space character causes scanf to read, but not store, all consecutive white-space characters
in the input up to the next non–white-space character. One white-space character in the format matches any number (including 0) and combination of
white-space characters in the input.
Non–white-space characters, except for the percent sign (%). A non–white-space character causes scanf to read, but not store, a matching
non–white-space character.If the next character in stdin does not match, scanf terminates.
Format specifications, introduced by the percent sign (%). A format specification causes scanf to read and convert characters in the input into values
of a specified type.
The value is assigned to an argument in the argument list.
The format is read from left to right. Characters outside format specifications are expected to match the sequence of characters in stdin; the matching characters
in stdin are scanned but not stored. If a character in stdin conflicts with the format specification, scanf terminates, and the character is left in stdin as if it had
not been read.
When the first format specification is encountered, the value of the first input field is converted according to this specification and stored in the location that is
specified by the first argument. The second format specification causes the second input field to be converted and stored in the second argument, and so on
through the end of the format string.
An input field is defined as all characters up to the first white-space character (space, tab, or newline), or up to the first character that cannot be converted according
to the format specification, or until the field width (if specified) is reached. If there are too many arguments for the given specifications, the extra arguments are
evaluated but ignored. The results are unpredictable if there are not enough arguments for the format specification.
Each field of the format specification is a single character or a number signifying a particular format option. The type character, which appears after the last
optional format field, determines whether the input field is interpreted as a character, a string, or a number.
The simplest format specification contains only the percent sign and a type character (for example, %s). If a percent sign (%) is followed by a character that
has no meaning as a format-control character, that character and the following characters (up to the next percent sign) are treated as an ordinary sequence of characters, that is, a
sequence of characters that must match the input. For example, to specify that a percent-sign character is to be input, use %%.
An asterisk (*) following the percent sign suppresses assignment of the next input field, which is interpreted as a field of the specified type. The field is
scanned but not stored.
---------------------------------------------------------------------------------我是分割线-----------------------------------------------------------
理解:
c语言的特殊格式:
%[*] [width] [{h | l | I64 | L}]type
系统输入的时候将这些特殊格式,作为白名单判断,一旦遇到这些格式,就自动判断一次输入结束,将结果存入变量保存,接着接收第二个参数。最终以%s。。。etc格式化一起统一输出!
最后一个%格式化,没看懂,以后在研究。。。。。。
比如typedef struct \t A B;
Format Specification Fields: scanf and wscanf Functions
A format specification has the following form:
%[*] [width] [{h | l | I64 | L}]type
The format argument specifies the interpretation of the input and can contain one or more of the following:
White-space characters: blank (' '); tab ('\t'); or newline ('\n'). A white-space character causes scanf to read, but not store, all consecutive white-space characters
in the input up to the next non–white-space character. One white-space character in the format matches any number (including 0) and combination of
white-space characters in the input.
Non–white-space characters, except for the percent sign (%). A non–white-space character causes scanf to read, but not store, a matching
non–white-space character.If the next character in stdin does not match, scanf terminates.
Format specifications, introduced by the percent sign (%). A format specification causes scanf to read and convert characters in the input into values
of a specified type.
The value is assigned to an argument in the argument list.
The format is read from left to right. Characters outside format specifications are expected to match the sequence of characters in stdin; the matching characters
in stdin are scanned but not stored. If a character in stdin conflicts with the format specification, scanf terminates, and the character is left in stdin as if it had
not been read.
When the first format specification is encountered, the value of the first input field is converted according to this specification and stored in the location that is
specified by the first argument. The second format specification causes the second input field to be converted and stored in the second argument, and so on
through the end of the format string.
An input field is defined as all characters up to the first white-space character (space, tab, or newline), or up to the first character that cannot be converted according
to the format specification, or until the field width (if specified) is reached. If there are too many arguments for the given specifications, the extra arguments are
evaluated but ignored. The results are unpredictable if there are not enough arguments for the format specification.
Each field of the format specification is a single character or a number signifying a particular format option. The type character, which appears after the last
optional format field, determines whether the input field is interpreted as a character, a string, or a number.
The simplest format specification contains only the percent sign and a type character (for example, %s). If a percent sign (%) is followed by a character that
has no meaning as a format-control character, that character and the following characters (up to the next percent sign) are treated as an ordinary sequence of characters, that is, a
sequence of characters that must match the input. For example, to specify that a percent-sign character is to be input, use %%.
An asterisk (*) following the percent sign suppresses assignment of the next input field, which is interpreted as a field of the specified type. The field is
scanned but not stored.
---------------------------------------------------------------------------------我是分割线-----------------------------------------------------------
理解:
c语言的特殊格式:
%[*] [width] [{h | l | I64 | L}]type
系统输入的时候将这些特殊格式,作为白名单判断,一旦遇到这些格式,就自动判断一次输入结束,将结果存入变量保存,接着接收第二个参数。最终以%s。。。etc格式化一起统一输出!
最后一个%格式化,没看懂,以后在研究。。。。。。
相关文章推荐
- 关于C语言下的 system 函数的 命令路径中的 空格 问题!
- c语言输出空格问题。
- C语言:关于计算字符串中空格数的问题
- c语言scanf()停止接受输入及scanf("%c",&c)吃掉回车或者空格字符的问题
- C语言的空格问题
- C语言(10)--逻辑短路问题、显示安装进度、Bessel函数、消除多余的空格
- c语言中scanf("%c",&c)吃掉回车或者空格字符的问题
- c语言中scanf输入带空格的字符串以及scanf输入单个字符的问题
- 关于C语言中用scanf语句输入带有空格字符串问题
- C语言:关于计算字符串中空格数的问题
- C语言实现字符串中把空格换成%20问题
- C语言 system()函数打开一个程序,路径有空格的问题
- C语言编程计算输入文本空格数量常犯的无计算结果的问题解析
- C语言小问题-不可小看
- 一些内存使用问题(c语言)
- 水滴石穿C语言之typedef的问题
- 汉字空格问题
- C语言之可变参数问题
- C语言之可变参数问题
- C语言中的typedef问题.