c语言中不用scanf要用什么来代替(大一初学者,求浅解)?

作者&投稿:挚哄 (若有异议请与网页底部的电邮联系)
C语言中%c,%s分别代表什么意思?~

%c在C语言中代表字符型格式符。
%s在C语言中代表字符串型格式符。
%c和%s一般用在printf、sprintf等字符串格式化函数中,用于决定格式化参数的数据类型。如printf("%s", a)会将变量a作为字符串类型进行格式化。
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
printf()函数的调用格式为: printf("", )。
格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

扩展资料:
C语言中所有格式化类型的定义:
1、%d/i
接受整数值并将它表示为有符号的十进制整数,i是老式写法
2、%o
无符号8进制整数(不输出前缀0)
3、%u
无符号10进制整数
4、%x/X
无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)
5、%f(lf)
单精度浮点数和双精度浮点数用f(lf在C99开始加入标准,意思和f相同)
6、%e/E
科学计数法表示的数,此处"e"的大小写代表在输出时用的“e”的大小写
7、%g/G
有效位数,如:%.8g表示单精度浮点数保留8位有效数字。
8、%c
字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
9、%s/S
字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)
10、%p
以16进制形式输出指针
11、%n
到此字符之前为止,一共输出的字符个数,不输出文本
12、%%
不进行转换,输出字符‘%’(百分号)本身
13、%m
打印errno值对应的出错内容,(例:printf("%m
");)
参考资料来源:百度百科-printf

->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.
举个例子:
struct Data
{
int a,b,c;
}; /*定义结构体*/
struct Data * p;/*定义结构体指针*/
struct Data A = {1,2,3};/*声明变量A*/
int x;/*声明一个变量x*/
p = &A ; /*让p指向A*/
x = p->a;/*这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x*/
/*由于此时p指向A,因而 p->a == A.a,也就是1*/
对于一开始的问题 p = p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:
struct Data
{
int a;
struct Data * next;
};/*定义结构体*/
…………
main()
{
struct Data * p;/*声明指针变量p*/
……
p = p->next;/*将next中的值赋给p*/
}
链表指针是C语言的一个难点,但也是重点,学懂了非常有用。要仔细讲就必须先讲变量、指针。

扩展资料:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。
由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。
使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。
但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。
链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。
链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。
程序语言或面向对象语言,如C,C++和Java依靠易变工具来生成链表。
参考资料:链表–百度百科

c语言中不用scanf可以用scanf_s来代替。

scanf函数在读取时不检查边界,所以可能会造成内存访问越界。scanf_s函数带“_s”后缀是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素。格式为“scanf_s(格式符,变量...变量,缓冲长度)”返回成功读入的数据项数,读取单个字符也需要限定长度。

扩展资料:

scanf_s函数被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。变量的地址是在编译阶段分配的(存储顺序由编译器决定)。

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



gets( )
scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用__gets__函数。

gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。

char string[15]; gets(string); /*遇到回车认为输入结束*/

scanf("%s",string); /*遇到空格认为输入结束*/

所以在输入的字符串中包含空格时,应该使用gets输入。

scanf和gets获取字符串时的区别

在C语言中,能构获取字符串的函数至少有两个:

1.scanf()

所在头文件:stdio.h

语法:scanf("格式控制字符串",变量地址列表);

接受字符串时:scanf("%s",字符数组名或指针);

2.gets()

所在头文件:stdio.h

语法:gets(字符数组名或指针);

两者在接受字符串时:

1.不同点:

scanf不能接受空格、制表符Tab、回车等;

而gets能够接受空格、制表符Tab和回车等;

2.相同点:

字符串接受结束后自动加'\0'。

例1:

#include <stdio.h>

main()

{

char ch1[10],ch2[10];

scanf("%s",ch1);

gets(ch2);

}

依次键入asd空格fg回车,asd空格fg回车,则ch1="asd\0",ch2="asd fg\0"。

getchar();输入单个字符
gets();输入一串字符串

getche();//输入单个字符,不用输入回车确认,头文件:conio.h

如果是输入字符串的话gets(); 字符getchar();
别的话没有可以替代的了。
不然就用文本输入
不要用标准输入

#include "stdio.h"
main()
{char a[1];
gets(a); /*从键盘输入字符数组a*/
puts(a); /*输出a*/

这个只是限于字符数组。
我知道也只有这个了。


C语言中 scanf_s和 scanf 区别是什么
1、使用区别 scanf()不会检查输入边界,可能造成数据溢出。scanf_s()会进行边界检查。2、意思 scanf表示从键盘输入指定格式的数据。如:scanf("%d",x);指从键盘给x输入一个int型(整型)数据;scanf("%f",x);指从键盘给x输入一个float型(实型)数据;对应的输出为:printf 按照指定的格式输出...

C语言,编程疑问。 为什么对scan函数的递归调用不成功,需要怎么修改呢...
你scan函数返回一个值,你看看你第二个scan调用返回什么?什么都没返回

c语言函数怎么发音?
按英文。scanf --- 由 scan 和 f 组成。 scan 扫描的意思,普通话音“斯看”,f 按字母读音 “爱夫”,f 是 formated (有格式)缩写。连读“斯看-爱夫”。printf --- 由 print 和 f 组成。print 打印,普通话音 扑林特,其中扑 不带韵母地发音。 f 按字母读音 “爱夫”,f 是 formated...

C语言问题?
include<stdio.h>main(){int n,i,j,k,m;while(1){scanf("%d",&n);m=0;for(i=1;i<=100;i++)\/\/5分 for(j=1;j<=100;j++)\/\/2分 for(k=1;k<=100;k++)\/\/1分 if((i*5+j*2+k==150)&&(k+j+i<100)){ printf("%d\\t5分%d枚,2分%d枚,1分%d枚...

C语言中如何传入(scan)一个类似矩阵的文件?
用这个吧:假设存储以上矩阵的文件名字为matrix.txt,保存在D盘下面。则 \/* readmatrix.c *\/#include <stdio.h>\/* the path of the file is as follows. *\/char filename[] = "D:\\\\matrix.txt";\/* the content of file 'matrix.txt'*1100spawn00*40io026*45io027*1600spawn10*60io012...

我需要用C++程序做的Nstep-scan
高分回报!答得好还有追加分!!完美答案给500分!用C语言也行,不是非要C++。 展开  我来答 2个回答 #热议# 已婚女性就应该承担家里大部分家务吗?...int SCAN(int Han,int DiscL[],int x,int y); \/\/扫描算法(SCAN)void CSCAN(int Han,int DiscL[]); \/\/循环扫描算法(CSCAN)void N_Step_SCAN...

关于C语言编写的一个问题
对于第一个问题,要弄清楚C语言语句和函数的概念。C语言中的语句都是以分号结束的,这没有问题。if关键字构成的条件判断结构,他后面的括号内的成分是语句执行的条件,不构成语句。如果是函数调用,括号内是函数的参数,是一个语句,要加分号。对于第二个问题,要弄清除scanf()格式化输入的形式。scanf(...

请问sas中scan函数如何使用?
功能(function):从字符表达式s中搜取给定的n个单词 语法(syntax)1、scan(s,n) n为正数时,从字符s末尾提取n个字符 2、scan(s,n) n为负数时,从字符s开始提取n个字符 3、scan(s,n<,list-of-delimiters>)如果指定分隔符,则只会按照该分隔符提取。如果不指定,则按照常用的分隔符拆分,默认...

C语言中用scanf函数输入字符时,为什么要在输入控制符%c前面加空格?用s...
c前面的空格就是用来屏蔽空白符的,首先必须要知道C语言 scanf() 函数的特性,以及scanf()与缓冲区、标准输入流之间的联系。在此之前,先介绍两个专业术语。1.缓冲区 缓冲区是一块存放临时输入数据的内存,我们在键盘上输入数据之所以不会马上显示,就是因为数据存放在了缓冲区,在上面例子中,当我们按...

c语言中数据输入错误了如何提示输入错误并实现要求重新输入
可以使用清理输入流fflush(stdin);这个原因是因为错误输入的内容会保留在输入流,下一次判断会从输入流开始读取,因为错误输入的内容还在,所以直接判断错误,继续循环。但有些编译器并不支持清理输入流。所以我们这时需要用手动输入让其清除。使用getchar();让其接收错误的字符。但这样就会变成这样,如果...

昂仁县13514907010: c语言中,不用scanf输入数据,可以用什么? -
羿狡新奕: 有!!!绝对可以有~~~!! 这样: #include#includevoid fun1(char *s) //字符串逆置!! { int len=strlen(s); int i,t; for(i=0;i{t=s[i];s[i]=s[len-1-i];s[len-1-i]=t;} } int fun2(char *s){//字符串转换成整数 int t,i=1,sum=0; while(*s){ t=(*s-'0')*i; sum+=t; i*=10; ...

昂仁县13514907010: 如果C语言没有了printf和scanf,用什么来实现数据的输入和输出? -
羿狡新奕: 可以freopen(stdin,) 文件作输入流 或者gets getchar getch puts putchar

昂仁县13514907010: C语言中不用scanf和printf函数怎么输入输出 -
羿狡新奕: 这是文件输入输出函数,例如下面代码: f((fp=fopen("d:\\input.txt","w"))==NULL) {printf("Cannot open file strike any key exit!");getchar();exit(1);} printf("输入一个字符串:\n"); scanf("%s",str); 则可以将你所输入的内容,保存在"input"文件

昂仁县13514907010: 为什么在C语言中,字符型不能用SCANF输入,而是用GETCHAR? -
羿狡新奕: 楼主你好,关于你问的这个问题在我初学C语言的时候也遇到过,不仅是一个人遇到,这是很多初学者都会遇到的问题~,当然,我不是说楼主大哥你是初学者~~~呵呵~~~~~~~这个问题曾经麻痹了很多人,开始我也是不知道是什么原因,直到一...

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

昂仁县13514907010: C语言中,不能用scanf()函数输入字符串后赋给字符型指针变量?具体请看下面代码中的注释.谢谢! -
羿狡新奕: char *pc; 只是声明了指针,这个指针没有赋值 也就是它指向的地址还不确定 pc没有初始化改成 char place[256]; char *pc=place;

昂仁县13514907010: c语言中什么时候加scanf什么时候不用加? -
羿狡新奕: &叫取地址符,如果你本身定义的是一个指针或一维数值的话,就不用加&,定义的是一个int,char等值的话就加&.(不完全是这样) 我想你可能是看到数组没加&才提的问吧!我也只是猜想,如果是的话等你学到指针与数组的关系你应该就明白了!

昂仁县13514907010: C语言scanf为什么有时不用?? -
羿狡新奕: 你好,a=-1;b=23;c=234561;c=67;这些已经赋值了,所以我们不需要再用scanf函数从键盘输入数据来赋值了,另外,printf()函数是输出语句,将格式化后的字符串打印输出到标准输出.

昂仁县13514907010: C语言中为什么有的地方不能用scanf? -
羿狡新奕: 在这条语句printf("input the char:"); 之前 添加代码:getchar();解释:输完第一个scanf之后 必须的有一个变量接受' enter '键

昂仁县13514907010: 用C语言写一个程序,不用scanf和printf,输入一串字符后立即原样输出. -
羿狡新奕: #include int main() { char a[999]; gets(a); puts(a); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网