原来scanf读入字符串还能这样..】的更多相关文章

(本文针对于NOIP Day1 玩具迷题) (这是弱鸡写的)(字符串用char二维,本质一样的) 在NOIP成功AC了这道题,结果OJ上被string卡了时间,没办法只能用scanf了.....百度看到scanf能读"字符串"??然后理解错了....我就用它读string..各种程序崩溃...然后看lsj用的char二维数组scanf("%s",&name[i]);然后看了看书上,二维数组的本质就是一维数组名加上元素...比如char   a[10][10]…
1. 读入字符 scanf/getchar:空格.Tab.回车都可以读入.但要以回车作为结束符. 所以当读入字符时,注意去掉一些干扰输入的字符,如空格和回车 2. 读入字符串 scanf:不能读入空格.Tab.回车. gets:可以读入空格.Tab.回车.但是读入回车时,字符串为空串. 所以当输入很多字符,并与换行符作为结束标志时,用gets,Code:gets(s); len=strlen(s); if (len==0) break;…
楼主 发表于: 2011-01-14 15:39:55 #include <stdio.h> int main(void){ int i; char a[5]; scanf("%s", a); printf("%s\n", a); return 0; } 运行输入hello world 回车则输出的只是空格之前的部分,怎样把空格之后的部分也输出呢? 2楼 回复于: 2011-01-14 17:27:23 谁说scanf不能做到? #include <…
在写代码的过程中,经常要一行一行的读入字符串进行处理,这里我总结了一些方法,供大家参考. 方法一:scanf()读入char[] 使用方法: ]; scanf("%[^\n]",&str); getchar(); 说明:在scanf函数中,可以使用%c来读取一个字符,使用%s读取一个字符串, 但是读取字符串时不忽略空格,读字符串时忽略开始的空格,并且读到空格为止,因此只能读取一个单词,而不是整行字符串. 其实scanf函数也可完成这样的功能,而且还更强大.这里主要介绍一个参数,…
#include<iostream> #include<cstdio> using namespace std; int main() { ],cch[]; int a; cin>>ch; scanf("%d%s",&a,cch); printf("%s\n%s",ch,cch); ; } scanf在读入字符串的时候是不加&,因为数组本身就是个地址 ] scanf("%s",ch); 当然如果…
当不支持gets时,getline又比较慢,可以使用scarf("%[^\n]s", str);来读入以换行表示读完的字符串,其中[^char]表示以char为结束.…
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main() { string a; a.resize(100); //需要预先分配空间 scanf("%s", &a[0]); printf("%s\n", a.c_str()); return 0; }…
scanf格式控制的完整格式: %     *     m     l或h     格式字符 ①格式字符与printf函数中的使用方式相同,以%d.%o.%x.%c.%s.%f.%e,无%u格式.%g格式. ②可以指定输入数据所占列宽,系统自动按它截取所需数据.如: scanf( "%3d%3d", &a, &b); 输入:123456 系统自动将123赋给a,456赋给b. ③%后的“*” 附加说明符,用来表示跳过它相应的数据.例如: scanf( "%2d…
首先,这些C函数,在VS上要加_s后缀的原因是,这些函数存在字符串越界等问题,可以参考这篇文章,https://blog.csdn.net/silleyj/article/details/8545408 个人猜测:由于这些C函数存在这些问题,所以VS编译器直接屏蔽了这些函数,然后用了一套加上后缀_s的函数来实现相同的功能,为了解决之前函数的越界的问题,_s系列的函数又分别增加了一些形参,比如长度等,所以,即使我们在C语言函数的基础上加上_s,还是会出现参数太少或形参类型和实参类型不匹配的问题.查…
#include <stdio.h> #include <string> using namespace std; int main() { string a; a.resize(100); //需要预先分配空间 scanf("%s", &a[0]); puts(a.c_str()); return 0; } 关于c_str() c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同.…
对于scanf函数,需求%s类型时,\n是不会影响scanf内容的对于需求%c类型时,\n也是字符,自然会有影响.…
char s[10];scanf("%s",s);改为scanf("%s",&s);也正确,为什么? 1 s与&s都表示地址,且值相等.2 s与&s类型不一样,s的类型为char *,&s的类型为char (*)[10],即指向一行有10个字符的指针.3 在scanf("%s",&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf("%s",(char *)&…
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main() { string a; a.resize(); //需要预先分配空间 scanf(]); printf("%s\n", a.c_str()); ; }…
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main() { string a; a.resize(100); //需要预先分配空间 scanf("%s", &a[0]); puts(a.c_str()); return 0; }…
Tree UVA - 548 题意就是多次读入两个序列,第一个是中序遍历的,第二个是后序遍历的.还原二叉树,然后从根节点走到叶子节点,找路径权值和最小的,如果有相同权值的就找叶子节点权值最小的. 最后输出来叶子节点. 一开始写的时候是用gets读入的,报CE, 要用fgets写,关于fgets(),传送门: fgets函数及其用法,C语言fgets函数详解 一开始用bfs过的,后来发现,好多人都是dfs过的,又写了一下dfs... 代码: //二叉树的中序和后序遍历还原树并输出最短路径的叶子节点…
作为一个资深$cin,cout$玩家,在多次因为$cin$太慢被吊打后,开始反思有必要认真地学一下$scanf$和$printf$了$\cdot \cdot \cdot$ 格式 $scanf( "$%$X",$&$M )$ $printf( "$%$X",M )$ 其中$X$是变量类型,$M$是变量名称 用法 变量类型              对应的$X$ $   int             d$ $long$  $long              …
http://blog.csdn.net/liuhui_8989/article/details/13398793   补充..输入s的时候不要把变量设置成string类型,设置成char数组类型....…
<?php $post_data = file_get_contents("e:\\1.txt"); echo $post_data; ?> 更多信息看这里:http://www.w3school.com.cn/php/func_filesystem_file_get_contents.asp…
一般而言,实现"读入用户输入的字符串",程序中自然不能对用户输入的长度有所限定.这在C++中很容易实现,而在C中确没那么容易. 这一疑问,我在刚学C++的时候也在脑中闪现过:不过很快将它抛在脑后了.直到最近,我在百度知道上讨论一个单词统计问题(链接)时,才重新想起.于是,翻出gcc 4.6.1的代码,浏览了一番. 首先,明确这里探讨的场景--从标准输入(或字符模式打开的文件)中读取一个字符串(换行.空格.tab间隔均可).用C++实现这一功能有两种选择--使用C标准库和使用C++标准库…
字符串哈希 寻找长度为n的主串s中的的匹配串T(长度为m)出现的位置或者次数问题属于字符串匹配问题. 朴素(一般)的想法就是从一个字符串的头开始for循环查找,当查找的一个字符与匹配串首字符相同时,往后查找长度为匹配串长度的字符串并一一比对,如果都一样的话,那么答案就加一: 但是往往有些题数据复杂度不允许这么干,于是我们引入字符串哈希这种操作: 具体流程: 滚动哈希,是优化复杂度的核心: 对于一个字符串的哈希值,我们定义哈希函数为H(C)=(c1b^m-1=c2b^m-2....+cmb^0)m…
程序中除了一目了然的Bug之外都需要一定的调试手段来分析到底错在哪.到目前为止我们的调试手段只有一种:根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入 printf ,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以动手修Bug了,如果结果和预期的不一样,就根据结果做进一步的假设和分析. 本章我们介绍一种很强大的调试工具 gdb ,可以完全操控程序的运行,使得程序就像你手里的玩具一样,叫它走就走,叫它停就停,并且随时可以查看程序中所有的内部状…
1. 单步执行和跟踪函数调用 看下面的程序: 例 10.1. 函数调试实例 #include <stdio.h> int add_range(int low, int high) { int i, sum; for (i = low; i <= high; i++) sum = sum + i; return sum; } int main(void) { int result[100]; result[0] = add_range(1, 10); result[1] = add_ran…
黑客技 关于在不知道系统的情况下 long long 的使用时 那么 #ifdef WIN32 #define LL "%I64d" #else #define LL "%lld" #endif 关与scanf 读入字符串: 可以省去字符串处理 scanf("%dgg%d",&a,&b); scanf("%d-%d-%d %d:%d:%d",&year,&month,&day,&…
一.gets() 函数详解 gets()函数用来从 标准输入设备(键盘)读取字符串直到 回车结束,但回车符('\n')不属于这个字符串. 调用格式为: gets(str); 其中str为字符串变量(字符串数组名或字符串指针). gets(str) 函数与 scanf("%s", &str) 相似,但不完全相同,使用 scanf("%s", &str) 函数输入字符串时存在一个问题,就是如果输入了 空格 会认为输入字符串结束. 空格后的字符将作为下一个…
#include <stdio.h> int main() { char str[128]; scanf( "%[^\n]", str ); printf( "%s\n", str ); return 0; } scanf中的正则表达式 1.定制自己的扫描集 %[abc].%[a-z].%[^abc].%[^a-z],比isdigit().isalpha()更加灵活.[]内是匹配的字符,^表示求反集.int i;char str[80], str2[80…
#include<iostream>#include<stdio.h>#include<string.h>#include<string>using namespace std; int main(){ char s[100]; string ss; scanf("%s",s); //空格回车结束 for(int i=0;i<strlen(s);i++) printf("%c",s[i]); printf(&qu…
gets(str)函数和scanf("%s",str)区别: 转自:https://zhidao.baidu.com/question/290403568.html 二者都是从终端读入字符串. 功能为: 1. gets功能为读入一行,并将换行符转换为字符串结束符. 2. scanf("%s",s);读入时,遇到空白字符,包括空格,制表符,换行符时均会停止输入. 从功能上可以看出不同之处: 1. 终止条件不同.gets只有遇到\n时才会结束输入,而scanf遇到空格或…
1 string的scanf读入操作 C++里面控制台输入直接使用cin操作就可以了:或者getline(istringstream,string); 字符和数字加减就是字符的ASCII码和数字直接加减. 只有内置类型int,float,char,double,bool可以直接赋值,scanf读入string不能直接使用scanf直接赋值,因为string是一个类class,有专门的初始化函数,不能使用scanf,同理gets接收的也是一个char指针.编程语言自带的sizeof也是一样,不能对…
我们先不说变量怎么读入,我们先说说读入是什么?为什么要读入? 先来看一个例子,我现在需要计算两个整数的乘积.先看只用前面学过的内容的实现. #include<stdio.h> int main(void) { int a,b; a=; b=; printf("%d\n",a*b); ; } 结果会输出2432.那么每次你只需要修改a和b的赋值然后再运行就可以计算两个数的乘积了. 但是,程序是给用户使用的,而不是程序员,所以你不可能让每个用户的电脑上装个DEVC然后修改编译运…
也许是最近模拟题打多了的缘故,我发现自己渐渐变得比较毒瘤起来,当然这也是有一定的好处的,因为从中我也学到了一些处理字符串的正确姿势,今天我们就来讲一 讲如何用函数getline来读入一整行字符串进行处理.或者他的一些变体. 首先我们先需要知道为什么我们要学习这个函数,是这样的,相信大家都应该知道以前有一个函数叫做gets,这个函数非常的好用,你可以非常快捷的使用他来进行一整行字符串的输入,但是这个函数不知道为什么在正式的比赛中,很容易使用它而导致挂掉,而又因为最基本的读入getchar本人在写的…