学曲谱,请上曲谱自学网!

scanf字符串

时间:2019-02-10 17:29:26编辑:刘牛来源:曲谱自学网

概括:这道题是殷筛惩同学的课后练习题,主要是关于scanf字符串,指导老师为李老师。

题目:scanf字符串

解:

选C.

A不用说了.

B是一个合法的“字符数组”初始化语句,但是不是一个正确的“字符串”赋值语句,因为字符串要求最后有字符串结束标志'\0'.

C对."ABCDE"是一个字符串常量,它存储在静态数据区中.

D不对.这个语句跟下面这种情况类似:

int *p;

scanf("%d", p);

p是一个野指针,不能直接往p指向的内存空间中输入数据.对于这个题目来说,只能用:

char s[10];

scanf("%s", s);这种操作.

举一反三

例1: 【以下能正确进行字符串赋值,赋初值的语句组是()Achar[5]={'a''e''i''o''u'};Bchar*s;s="good!";Cchars[5]="good!";Dchars[5];s=“good";】


思路提示:

B正确

A char[5]={'a' 'e' 'i' 'o' 'u'}; 没有终结符,不算字符串

B char *s;s="good!"; //定义一个字符指针,然后让这个指针指向常量字符串"good!",正确

C char s[5]="good!"; //"good!"有6个字符,s空间不够,会越界

D char s[5];s=“good"; //s是个数组名,是常量,不可以被赋值

相关思考练习题:

题1:为什么在C语言中,用scanf输入字符串时,不需加&

点拨:因为字符串变量名在 scanf 语句里 表示指针 (地址) 例如: char s[80]; scanf("%s",s); --- 这里的s 已是地址。 当然,写成 scanf("%s",&s[0] ); 也可以, &s[0] 是地址。

题2:★C语言 关于scanf输入字符串的问题

点拨:name=%s num=%d 它会按照你的格式来进行接收字符串到 一个内存地址中,但这个地址并不是 你定义的 name[20] 和 num ,而是 stdin 这个结构体中 _base 成员 指向的数据区,这个数据区叫 做 输入缓冲出,同理 还有 输出缓冲区 :stdout._base 。 s...

题3:关于用scanf输入 字符串

点拨:可以让你在运行完有效代码后,不至于直接运行到return 0就推出程序。你可以看运行结果,然后按任意键,2次getchar函数运行完后才退出程序。 如果你用visual studio2008或更高作为开发环境的话,编译生成的程序不用加这里最后的getchar,程序会主...

题4:用scanf输入字符串不需要&么>?

点拨:不要,因为a是一个字符数组名或指针,是地址性的

题5:scanf接受键盘输入字符串后末尾是否自动加'\0?'

点拨:是的,自动就加上了 #include "stdio.h" int main(void) { char s[100]; scanf("%s", s); printf("%s", s); } 自动就加上了,不用担心

iso9000质量管理体系

先进工作者事迹材料

热门曲谱

Copyright © 2014-2019 曲谱大全(www.qpzxw.com)曲谱自学网版权所有 备案号:皖ICP备2021004734号-1

版权声明:曲谱网所有曲谱及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。

联系邮箱:qupudaquanhezuo@gmail.com