c语言中的scanf 函数的用法

为什么下面的函数 输出的值只是空格前面的字符呢???急求答案!!!
#inclde<stdio.h>
void main ()
{ char s[80];
scanf("%s",s);
printf("%s",s);
}

scanf 函数最主要的用法是:

scanf("输入控制符", 输入参数);

功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。

用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。

如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。

扩展资料:

使用scanf()函数需要注意的问题:

1.对于字符串数组或字符串指针变量,由于数组名可以转换为数组和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。

2.可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。

3.scanf函数中没有类似printf的精度控制。

如:scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。

4.scanf中要求给出变量地址,如给出变量名则会出错

如:scanf("%d",a);是非法的,应改为scanf("%d",&a);才是合法的。

5.在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。

C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。

6.在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。

参考资料:

百度百科-scanf()函数

百度百科-gets()函数

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2019-08-09

1、空白符问题

#include<stdio.h>

main()

{   

int a;

printf("input the data ");

scanf("%d ",&a);//这里多了一个回车符

printf("%d",a);

return 0;

}

2、回车符也占位。

#include <stdio.h>

main()

{

int n = 5;

char c[n];

for(int i = 0; i < n; i++)

c[i] = scanf("%c",&c[i]); 

printf(c);

return 0;

}

3、scanf()函数的参数输入类型不匹配问题

#include<stdio.h>

main()

{

int a=123;

char c='t';

printf("input ");

scanf("%d%c",&a,&c);

scanf("%d%c",&a,&c);

scanf("%d%c",&a,&c);

printf("%d %c ",a,c);

return 0;

}

扩展资料:

scanf函数用%s读取一个字符串时,其实它只能读取一个单词,因为遇到空格时,它会认为输入已结束。因此一般使用fgets来读取一个字符串。如果想用scanf函数读取带有空格的字符串时,需要使用参数%[ ]来完成,它的意思是读入一个字符集合。

[ ]是个集合的标志,%[ ]特指读入此集合所限定的那些字符,比如%[A-Z]是输入大写字母,一旦遇到不在此集合的字符便停止。如果集合的第一个字符是“^”,这说明读取不在"^"后面集合的字符,既遇到"^"后面集合的字符便停止(这就是scanf函数里的正则表达式应用)。

本回答被网友采纳
第2个回答  2019-11-13

scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include 。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include 。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

第3个回答  推荐于2019-08-24

输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&。

scanf("%s",s);改为scanf("%s",&s);

scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);

格式控制字符串包含:格式控制说明,普通字符。

1、格式控制字符串表示输入的格式,(int型用%d,float用%f,double型用%lf)

2、普通字符:在输出数据的时候,按照原样输出的字符,如:"fahr=%d,celsius=%d\n"中的fahr=,celsius=。

3、输入的参数是变量的地址,所以要在变量前面加&。

扩展资料

调用scanf()函数输入数据,变量名x前面要加&,%lf中的l是long的首字母,scanf函数的输入参数必须和格式控制字符串中的格式控制说明相对应,并且它们的类型,个数和位置要一一对应。

如果scanf中%d是连着写的如“%d%d%d”,在输入数据时,数据之间不可以用逗号分隔,只能用空白字符(空格或tab键或者回车键)分隔——“2 (空格)3(tab) 4” 或 “2(tab)3(回车)4”等。若是“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4”。

参考资料来源:百度百科——scanf

本回答被网友采纳
第4个回答  推荐于2019-09-08

输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&。

scanf("%s",s);改为scanf("%s",&s);

scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);

格式控制字符串包含:格式控制说明,普通字符。

1、格式控制字符串表示输入的格式,(int型用%d,float用%f,double型用%lf)

2、普通字符:在输出数据的时候,按照原样输出的字符,如:"fahr=%d,celsius=%d\n"中的fahr=,celsius=。

3、输入的参数是变量的地址,所以要在变量前面加&。

扩展资料

“输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。这句话同样对 scanf 有效,即“输入控制符”和“输入参数”无论在“顺序上”还是在“个数上”一定要一一对应。比如:

# include <stdio.h>

int main(void)

{

char ch;

int i;

scanf("%c%d", &ch);

printf("ch = %c, i = %d\n", ch, i);

return 0;

}

参考资料:百度百科 - scanf

本回答被网友采纳

scanf怎么用?
scanf用途:从键盘输入数据,从键盘得到字符,放到某个变量里。格式:scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include <stdio.h>。)它...

scanf在c语言中的作用
scanf是c语言中的标准库函数,主要作用是接收用户输入的数据。scanf是C语言中的输入函数,可以从键盘获得用户输入,和printf输出功能正好相反。scanf的输入格式是多种多样的,使用时需根据情况选择,最常用的是十进制整数型输入%d。scanf的使用和输入格式 scanf("%d", &c); \/\/输入一个整数并赋值给c。

scanf函数的用法
用法如下:scanf()是C语言中的一个输出函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。scanf()函数的指定输入格式有很多种,下面是一些比较常用的格式:d:读入可选有符号的十进制整数。u:读入无符号符号十进制整数。a,e,f,g,A,E,F,G:...

scanf与printf用法详解
scanf:用法:scanf是C语言中的一个标准库函数,用于从标准输入(通常是键盘)读取数据,并将其存储到指定的变量中。 格式字符串:scanf函数需要一个格式字符串,该字符串描述了要读取的数据类型和格式。例如,如果要读取一个整数,可以使用"%d"作为格式字符串。 变量列表:在格式字符串之后,需要列出要...

c语言中scanf语句的用法及规则
在C语言中,scanf()函数用于从标准输入(通常是键盘)读取数据,并将其存储到指定的变量中。scanf()函数通常与格式化字符串一起使用,格式化字符串指定了要读取的数据类型和格式。scanf()函数按照格式化字符串中指定的格式读取数据,并将其存储到指定的变量中。scanf()函数的语法如下:int scanf(const ...

c语言中scanf的用法
c语言中scanf的用法是怎样的?让我们一起了解一下吧!scanf 的功能用一句话来概括就是“通过键盘给程序中的变量赋值”,它通常有两种用法。1、 scanf(输入控制符, 输入参数);功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。2、scanf(输入控制...

scanf怎么用?
scanf是C语言中用于读取输入的函数。以下是关于scanf的 一、基本语法 scanf是标准输入函数,其语法形式为:scanf;其中,格式控制字符串用于定义输入数据的格式,如%d表示读取整数,%s表示读取字符串等。输入项地址列表则是要读取数据的变量地址列表。二、使用示例 假设我们要从键盘读取一个整数和一个浮点数...

c语言中scanf函数的用法有几种?
选择答案A,因为题目中的A选项“abc”是一个字符串所以说A选项不能够正确的赋值给x变量。所以题目的答案选择的是A选项。选项解析:B选项虽然是一个整形的数,但是可以赋值给x变量,发生了数据类型的转换,C选项输入的是一个字符,那么字符有一个ASCII码值,相当于将‘A’的ASCII码值赋值给x变量。C...

scanf函数是什么意思?
scanf是C语言中的一个输入函数,用于从标准输入流(通常是键盘)读取数据。scanf函数的基本语法是:scanf(format-string, arguments);其中,format-string是一个包含格式控制符的字符串,用于指定要读取的数据类型和格式。arguments是一个包含要读取的数据项的列表。例如,以下代码从键盘读取一个整数:在这个...

scanf函数的用法
scanf函数是C语言中用于从标准输入读取数据并存储到变量中的函数。其使用方法如下:基本语法:c int scanf;详细解释:1. 函数定义与功能 scanf函数定义在stdio.h头文件中,其作用是按照指定的格式读取输入数据。该函数会根据提供的格式字符串,从标准输入设备读取数据,并根据格式字符串中指定的格式,将...

相似回答