scanf如何输入字符串(如何用scanf输入字符串) |
您所在的位置:网站首页 › 用scanf输入字符串时,字符串中不能含有空格 › scanf如何输入字符串(如何用scanf输入字符串) |
本文目录如何用scanf输入字符串如何输入一个字符串如何输入一个字符串c语言怎么用scanf输入字符串scanf函数怎么使用用scanf函数输入一个字符串到数组str中正确的语句是scanf的输入常量加字符c语言 如何从键盘输入字符串scanf()函数的输入方式是什么用scanf输入字符串如何用scanf输入字符串 用scanf输入字符串的代码段:char s;scanf(“%s“,s):printf(“%s\n“,s); 如何输入一个字符串scanf可改为scanf(“%s“,&a);并且不用for语句。 例如: char a; gets(a); puts(a); 用scanf/printf输入输出。scanf/printf是C语言的格式化输入输出函数,可以用于输入输出各种基础类型,字符串(char*)也在其支持范围内。格式化字符为%s。 扩展资料: 字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。 通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。 如何输入一个字符串问题一:如何输入一个字符串? char a; scanf(%s,a); 或者 char b; gets(b); 都可以的。 问题二:如何输入一个字符串在C++ 按要求定义字符串常量,加入的代码应该是 string str=“12345”; 后面输出直接输出str就ok了 答案补充 提示什么错误/你发过来我看啊看 答案补充 头文件加上#includestring 答案补充 注意,你的分号要在英文输入法的状态下输入,看看是不是这个错误 答案补充 给你重新编译了一下,你试试吧 #includeiostream int main() { const int N = 256; enum AB{A = 10,B = 20} a=A,b=B; const char str=12345; std::couta+b’\n’N; std::coutstr’\n’; return 0; } 答案补充 这个程序的标准C++程序,如下所示: #includeiostream using namespace std; int main() { const int N = 256; enum AB{A = 10,B = 20} a=A,b=B; const char str=12345; couta+bendlN; coutstrendl; return 0; } 问题三:C语言上中怎么样直接输入输出一个字符串 利用输出控制符%s,比如定义一个数组存放,char a;但是输出的时候使用printf(%s,a); 注意不是a;就可以了 问题四:C语言,要输入N个字符串怎么输? 用二维数组 比如输入两个字符串 #include main() { char s; for(int i=0;i 问题五:JAVA中怎么输入一个字符 1.先创建一个Scanner对象 2.调用Scanner对象的next()方法获取控制台输入,返回的是一个String类型,因为没有nextChar()方法 3.调用String的charAt(0)方法获取第一个字符 Scanner sc = new Scanner(System.in);String s = sc.next(); char c = s.charAt(0); 问题六:JAVA中怎样输入字符串 import java.util.Scanner; public class Test{ public static void main(String args) { System.out.println(请随便输入一些内容:); Scanner sca=绩ew Scanner(System.in); String s=sca.next(); System.out.println(你输入内容是:+s); } } 问题七:怎么定义一个字符串,并输入,输出。 C语言中,没有字符串类型,用字符数组处理字符串。 字符数组定义: char 数组名; 说明:一维字符数组,用于存储和处理一个字贰串,二维字符数组,用于同时存储和处理多个字符串; 因为字符型与整型是通用的,可以用int来定义字符数组,但两者有区别,如: char c; /* 在内存中占10字节 */ int c; /* 在内存中占40字节 */ 输入输出方法:逐个字符输入输出:%c,整个字符串输入输出:%s 一:用scanf()输入字符串,printf()输出字符串: 逐个字符处理: #include stdio.h void main() { char ch; int i; for(i=0;i) 字符串输出函数puts 格式:puts(字符数组) 功能:向显示器输出字符串(输出完,自动换行,即用’\n’替换了’\0’) 说明:字符数组必须以‘\0’结束 字符串输入函数gets 格式:gets(字符数组) 功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’ 说明:输入串长度应小于字符数组维数,字符串中可以包含空格 例如: #include #include void main() { char str; int i; printf(请输入字符串:\n); gets(str); printf(输入的字符串为:\n); puts(str); } 写的很详细了,希望对你有帮助。。。。。。...》》 问题八:在java中怎样在终端输入一个字符串、字符、数字。 Scanner input=new Scanner(System.in); String str=input.next(); int i=input.nextInt(); System.out.println(str+i); 问题九:在java程序中怎样从键盘输入一个字符串 使用Scanner in = new Scanner(System.in); String str = in,next(); 问题十:如何实现在每次循环中输入一个字符(目的是为了想对每个输入的字符判断) (一)6次 #include stdafx.h“If the vc++6.0, with this line.#include stdio.hint main(void){ int i; char x; for(i=0;i c语言怎么用scanf输入字符串c语言用scanf输入字符串:char s;scanf(“%s“,s);这个语句只能输入不包含空格和跳格键的字符串并且以回车符结束输入。 scanf函数怎么使用简介 scanf函数,与printf函数一样,都被定义在stdio.h里,因此在使用scanf函数时要加上#include。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其关键字最末一个字母f即为“格式”(format)之意。 );\x0d\x0a “格式控制”的含义同printf函数;“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串首地址。\x0d\x0a scanf()函数返回成功赋值的数据项数,出错时则返回EOF。\x0d\x0a 例:使用scanf函数输入数据。\x0d\x0a #include\x0d\x0a void main()\x0d\x0a {\x0d\x0a int a,b,c;\x0d\x0a printf(“input a,b,c\n“);\x0d\x0a scanf(“%d%d%d“,&a,&b,&c);\x0d\x0a printf(“a=%d,b=%d,c=%d“,a,b,c);\x0d\x0a } 使用scanf函数时应该注意的问题 1、sacnf()中的变量必须使用地址。 \x0d\x0a 2、scanf()的格式控制串可以使用其它非空白字符,但在输入时必须输入这些字符。\x0d\x0a 3、在用“%c“输入时,空格和“转义字符”均作为有效字符。\x0d\x0a 问题一:scanf()函数不能正确接受有空格的字符串?如: I love you!\x0d\x0a #include \x0d\x0a int main()\x0d\x0a {\x0d\x0a char str;\x0d\x0a scanf(“%s“,str);\x0d\x0a printf(“%s“,str); \x0d\x0a return 0;\x0d\x0a }\x0d\x0a 输入:I love you!\x0d\x0a 输出:scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。\x0d\x0a ① 遇空格、“回车”、“跳格”键。\x0d\x0a ② 遇宽度结束。\x0d\x0a ③ 遇非法输入。\x0d\x0a 所以,上述程序并不能达到预期目的,scanf()扫描到“I“后面的空格就认为对str的赋值结束,并忽略后面的“love you!“.这里要注意是“love you!“还在键盘缓冲区(关于这个问题,网上我所见的说法都是如此,但是,我经过调试发现,其实这时缓冲区字符串首尾指针已经相等了,也就是说缓冲区清空了,scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中)。我们改动一下上面的程序来验证一下:\x0d\x0a #include \x0d\x0a int main()\x0d\x0a {\x0d\x0a char str“,string);\x0d\x0a printf(“%s\n“,string);\x0d\x0a return 0;\x0d\x0a }\x0d\x0a 问题二:键盘缓冲区残余信息问题\x0d\x0a #include \x0d\x0a int main()\x0d\x0a {\x0d\x0a int a;\x0d\x0a char c; do\x0d\x0a {\x0d\x0a scanf(“%d“,&a);\x0d\x0a scanf(“%c“,&c);\x0d\x0a printf(“a=%d c=%c\n“,a,c);/*printf(“c=%d\n“,c);*/\x0d\x0a }while(c!=’N’);\x0d\x0a } \x0d\x0a scanf(“%c“,&c);这句不能正常接收字符,什么原因呢?我们用printf(“c=%d\n“,c);将C用int表示出来,启用printf(“c=%d\n“,c);这一句,看看scanf()函数赋给C到底是什么,结果是c=10 ,ASCII值为10是什么?换行即\n.对了,我们每击打一下“Enter“键,向键盘缓冲区发去一个“回车”(\r),一个“换行“(\n),在这里\r被scanf()函数处理掉了(姑且这么认为吧^_^),而\n被scanf()函数“错误”地赋给了c.解决办法:可以在两个scanf()函数之后加个fflush(stdin);,还有加getch() , getchar()也可以,但是要视具体scanf()语句加那个,这里就不分析了,读者自己去摸索吧。但是加fflush(stdin);不管什么情况都可行。\x0d\x0a (\x0d\x0a 函数名: fflush \x0d\x0a 功 能: 清除一个流\x0d\x0a 用 法: int fflush(FILE *stream);\x0d\x0a )\x0d\x0a #include \x0d\x0a int main()\x0d\x0a {\x0d\x0a int a;\x0d\x0a char c; do\x0d\x0a {\x0d\x0a scanf(“%d“,&a);\x0d\x0a fflush(stdin);\x0d\x0a scanf(“%c“,&c);\x0d\x0a fflush(stdin);\x0d\x0a printf(“a=%d c=%c\n“,a,c); }while(c!=’N’);\x0d\x0a } \x0d\x0a 这里再给一个用“空格符”来处理缓冲区残余信息的示例:运行出错的程序:\x0d\x0a #include \x0d\x0a int main()\x0d\x0a {\x0d\x0a int i;\x0d\x0a char j;\x0d\x0a for(i = 0;i 《 10;i++)\x0d\x0a {\x0d\x0a scanf(“%c“,&j);/*这里%前没有空格*/\x0d\x0a }\x0d\x0a }\x0d\x0a 使用了空格控制符后:\x0d\x0a #include \x0d\x0a int main()\x0d\x0a {\x0d\x0a int i;\x0d\x0a char j;\x0d\x0a for(i = 0;i 《 10;i++)\x0d\x0a {\x0d\x0a scanf(“ %c“,&j);/*注意这里%前有个空格*/\x0d\x0a }\x0d\x0a } \x0d\x0a 可以运行看看两个程序有什么不同。\x0d\x0a 问题三: 如何处理scanf()函数误输入造成程序死锁或出错?\x0d\x0a #include \x0d\x0a int main()\x0d\x0a {\x0d\x0a int a,b,c; /*计算a+b*/\x0d\x0a scanf(“%d,%d“,&a,&b);\x0d\x0a c=a+b;\x0d\x0a printf(“%d+%d=%d“,a,b,c);\x0d\x0a }\x0d\x0a 如上程序,如果正确输入a,b的值,那么没什么问题,但是,你不能保证使用者每一次都能正确输入,一旦输入了错误的类型,你的程序不是死锁,就是得到一个错误的结果,呵呵,这可能所有人都遇到过的问题吧?解决方法:scanf()函数执行成功时的返回值是成功读取的变量数,也就是说,你这个scanf()函数有几个变量,如果scanf()函数全部正常读取,它就返回几。但这里还要注意另一个问题,如果输入了非法数据,键盘缓冲区就可能还个有残余信息问题。正确的例程:\x0d\x0a #include \x0d\x0a int main()\x0d\x0a {\x0d\x0a int a,b,c; /*计算a+b*/\x0d\x0a while(scanf(“%d,%d“,&a,&b)!=2)fflush(stdin);\x0d\x0a c=a+b;\x0d\x0a printf(“%d+%d=%d“,a,b,c);\x0d\x0a }\x0d\x0a 补充: fflush(stdin)这个方法在GCC下不可用。(在VC6.0下可以)\x0d\x0a 以下是 C99 对 fflush 函数的定义:\x0d\x0a int fflush(FILE *stream);\x0d\x0a 如果stream指向输出流或者更新流(update stream),并且这个更新流\x0d\x0a 最近执行的操作不是输入,那么fflush函数将把任何未被写入的数据写入stream\x0d\x0a 指向的文件(如标准输出文件stdout)。否则,fflush函数的行为是不确定的。\x0d\x0a fflush(NULL)清空所有输出流和上面提到的更新流。如果发生写错误,fflush\x0d\x0a 函数会给那些流打上错误标记,并且返回EOF,否则返回0。\x0d\x0a 由此可知,如果 stream 指向输入流(如 stdin),那么 fflush 函数的行为是不确定的。故而使用\x0d\x0a fflush(stdin) 是不正确的,至少是移植性不好的。\x0d\x0a 可采用如下方法:\x0d\x0a void flush() /* 只适用于键盘缓冲区有残余信息的情况,若键盘缓冲区为空则不能使用 */\x0d\x0a {\x0d\x0a while (getchar() != ’\n’) ;\x0d\x0a }\x0d\x0a #include \x0d\x0a int main()\x0d\x0a {\x0d\x0a int a,b,c; /*计算a+b*/\x0d\x0a while(scanf(“%d,%d“,&a,&b)!=2) flush();\x0d\x0a c=a+b;\x0d\x0a printf(“%d+%d=%d“,a,b,c);\x0d\x0a } 用scanf函数输入一个字符串到数组str中正确的语句是您好,很高兴回答您的问题。输入字符串到字符数组中,正确的语句可以用循环一个个输入,也可以整体输入,方法为scanf(“%s“,str)或者for (i=0;i《strlen(str);i++)scanf(“%c“,str=“\n“; scanf的输入常量加字符函数输入字符串详解scanf(“%s“, str); /*输入参数是已经定义好的“字符数组名”, 不用加&, 因为在C语言中数组名就代表该数组的起始地址*/ printf(“输函数输入字符串详解scanf(“%s“, str); /*输入参数是已经定义好的“字符数组名”, 不用加&, 因为在C语言中数组名就代表该数组的起始地址*/ printf(“输函数输入字符串详解scanf(“%s“, str); /*输入参数是已经定义好的“字符数组名”, 不用加&, 因为在C语言中数组名就代表该数组的起始地址*/ printf(“输函数输入字符串详解scanf(“%s“, str); /*输入参数是已经定义好的“字符数组名”, 不用加&, 因为在C语言中数组名就代表该数组的起始地址*/ printf(“输 c语言 如何从键盘输入字符串c语言从键盘输入字符串的步骤如下: 1.首先我们新建一个dev C++的项目。 2.接下来在项目中新建C语言程序文件。 3.然后在C语言文件中声明一个字节数组。 4.接下来我们通过printf函数提示用户输入字符串,通过scanf接收用户输入的字符串。 5.接着在通过printf函数输出用户输入的内容。 6.最后运行C语言程序,我们输入内容以后就可以输出了。这样就解决了c语言从键盘输入字符串的问题了。 scanf()函数的输入方式是什么scanf函数主要接收标准输入流,也就是我们熟知的键盘按键,它接受的输入方式是按照格式来定义的,比如接收整数,那么就是%d,接收字符就是%c,接收字符串就是%s。需要注意的事情是scanf无法接收包含有空格的字符串,如果要接收包含空格的字符串可以使用gets函数。 用scanf输入字符串s与&s都表示地址,且值相等。 s与&s类型不一样,s的类型为char *,&s的类型为char (*),即指向一行有10个字符的指针。 在scanf(“%s“,&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf(“%s“,(char *)&s); 扩展资料: scanf()是C语言中的一个输入函数。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。 scanf的发展:使用scanf函数进行输入,必须指定输入的数据的类型和格式,不仅繁琐复杂,而且很容易出错。C++保留scanf只是为了和C兼容,以便过去用C语言写的程序可以在C++的环境下运行。C++的编程人员都愿意使用cin进行输入,很少使用scanf。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |