ACM字符串输入问题

坑死了。。竟然被这个问题困扰了大半个学期,今天搜来翻去终于弄明白了一些,以后固定用这几种用法好了不然总出错QAQ
实际测试例子就没放了,死记这里就够用了T-T

概念:

gets()函数:用来从标准输入设备(键盘)读取字符串直到换行符结束。

cin 可以连续从键盘读取想要的数据,以空格、tab或换行作为分隔符。

scanf("%s",str) 可以连续从键盘读取想要的字符串(数组),以空格、tab或换行作为分隔符。

基本用法:

C语言:读入一段带空格的字符串使用gets()        头文件#include<stdio.h>

读入一段不带空格的字符串使用scanf("%s",str)      头文件#include<string.h>

C++:     读入一段带空格的字符串使用gets()       头文件#include<iostream>

读入一段不带空格的字符串使用cin       头文件#include<cstring>

附一个小问题:

一般使用ACM会多次使用这些输入函数,
但是如果出现这样一个情况:第一次输入的字符串长度大于第二次输入的字符串长度。
那么strlen测量字符串长度时会怎样呢?
经过测试结论是 测出长度为第二次字符串的长度(原来第一次读入多的字符串还在)

原文地址:https://www.cnblogs.com/lightice/p/10327452.html

时间: 2024-10-10 12:54:02

ACM字符串输入问题的相关文章

【好好补题,因为没准题目还会再出第三遍!!】ACM字符串-组合数学(官方题解是数位DP来写)

ACM字符串 1.长度不能超过n 2.字符串中仅包含大写字母 3.生成的字符串必须包含字符串“ACM”,ACM字符串要求连在一块! ok,是不是很简单?现在告诉你n的值,你来告诉我这样的字符串有多少个 输入 输入一个正整数T,代表有T组数据 接下来T行,每行一个正整数n,n<=10. 输出 输出符合条件的字符串的数目 样例输入 1 3 样例输出 1 做题过程: 熬了三四个小时,WA了无数次!最终推出了组合数的公式! 首先暴力打表,嘿嘿!这样极大地压缩计算时间! 打表如下: 一:生成连续的7位绝对

C语言 realloc为什么要有返回值,realloc返回值详解/(解决任意长度字符串输入问题)。

在C语言操作中会用到大量的内存操作,其中很常用的一个是realloc(). 由字面意思可以知道,该函数的作用是用于重新分配内存. 使用方式如下: NewPtr=(数据类型*)realloc(OldPtr,MemSize) 其中OldPtr指向 待重新分配内存的指针. NewPtr指向 新分配空间的指针. MemSize为 分配后的空间大小. 该函数的使用涉及以下几个问题: 1.不同情况下的返回值 2.OldPtr指向的内存会不会自动释放 3.OldPtr和NewPtr分别是什么内容,他们有什么关

cin 字符串输入

cin 字符串输入 在学习c的时候,关于字符串的输入,记得有 scanf("%s",s); gets(s); 还有...o.o 好想没了... scanf("%s",s) 读取一行,但空格相当与一个'\n' 不读取. while(scanf("%s",s)){} : 支持 Ctrl+z 结束输入 即 此次运行表达式==0. gets(s) 读取一行,包括空格. cin>>s while(cin>>s): 也支持 Ctrl+

C++每次读取一行字符串输入(学习笔记) (转)

1. 面向行的输入:getline()getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾. cin.getline(Arr, 20) // Arr为用来输入行的数组的名称:                      //20包括19个字符和1个空字符 2. 面向行的输入:get()与getline()的工作方式类似,接受参数相同,但get()并不再读取并丢弃换行符,而是将其留在输入队列中.可如下使用: cin.get(Arr1, ArSize); // 读第一行cin.g

字符串输入专题

一.前言:如果想读入一个字符串,必须首先预留存储字符串的空间,然后才使用输入函数来获取合格字符串. 二.创建存储空间 要做的第一件事是建立一个空间用来存放字符串.不要指望计算机读取字符串时会自动计算字符串长度,并且为字符串分配空间.所以,字符串的空间必须人为分配:最简单的办法就是在声明中指出数组的大小. 例1: char *name; scanf("%s",name);//错误 例2:   char name[80]; scanf("%s",name);//正确 例

C字符串输入输出函数

下面就几个常用的字符串输入输出函数做个小小的总结TAT 使用时添加头文件:#include<stdio.h>. scanf("格式控制字符串",变量地址列表):(printf),每次只能接收一个单词,无法接收整行数据 gets(字符数组名或指针):读取一整行的输入,以回车结束读取,如果用来保存接收到数据的空间不够大就会导致缓冲区溢出,覆盖缓冲区之后的数据,在C11中被废弃.gets()在接收数据时,输入换行符时会丢弃,不会被读取,没有换行的效果,读取的换行符被转换为'\0'

ACM 字符串 题目整理

AC自动机 UVa 11468  Substring AC自动机+概率DP. 注意要补全不存在的边. 为什么要补全不存在的边呢?补全以后可以直接找到状态的转移,即从所有子节点就可以实现所有状态转移. #include<iostream> #include<vector> #include<cmath> #include<map> #include<algorithm> #include<cstring> #include<cst

用指针对字符串输入/输出

#include<iostream> using namespace std; int main(void) { char *s=new char[80]; cout<<"输入一个字符串: "; cin>>s; getchar(); cout<<"输入的字符串是:"; cout<<s; getchar(); delete []s; s=NULL; } s是一个字符型指针变量,通过new运算符申请一个动态数组

把字符串输入到表格里

在格子中输出字符串 在格子中显示 用户输入一个字符串,把它显示在格子中. 要求: 水平左对齐,垂直顶端对齐. 格子的宽度和高度是先定好的,比如:30 x 7 如果字符串太长,则需要折行显示. 如果实在太长,到最后一行都装不下,则截断它,使之不破坏格子边框. 可能的情景: 情景1 情景2 我们可以定义一个大的字符型数组 char[][] cc,该数组的范围就是表格的大小. 先把数组的四个角赋值为 '+',第一行最后一行的其他位置赋值为 '-',第一列和最后一列赋值为 '|'.这样,表格的框架就打好