王道oj训练总结
提示:本问题皆来自于王道oj训练营
以下是本篇文章正文内容,下面案例可供参考
一、问题描述
Description
输入一个整型数,然后申请对应大小空间内存,然后读取一个字符串,字符串的输入长度小于最初输入的整型数大小,最后输出输入的字符串即可(无需考虑输入的字符串过长,超过了内存大小);
注意下面问题:
char *p;
scanf(“%d”,&n);
p=malloc(n);
scanf(“%c”,&c);//注意在scanf和gets中间使用scanf(“%c”,&c),去除换行
gets§;
注意:OJ不支持fflush(stdin)清空标准输入缓冲区操作
Input
一个整型数和一个字符串,例如
10
hello
Output
输出输入的字符串,上面输入的是hello,那么输出hello
Sample Input 1
10
hello
Sample Output 1
hello
二、代码示例
1.源代码
代码如下(示例):
#include "stdio.h"
#include "stdlib.h"
int main(){
int n;
scanf("%d",&n);
char *p;
char c;
p=(char *)malloc(n);
scanf("%c",&c);//注意在scanf和gets中间使用scanf("%c",&c),去除换行
gets(p);
puts(p);
return 0;
}
总结
gets()和puts()函数的相关知识点
gets()和scanf()的区别:
gets() 的作用是从键盘上读取字符串,scanf()函数也可以进行读取,gets() 可以接收空格、Tab键, 碰到回车键输入才结束,但是scanf碰到空格、回车、Tab键 都会结束输入。
gets()和printf()的区别:
puts()的作用是输出字符并换行,printf()需要添加"\n’用来换行,而puts在输出的时候会将字符串末尾的\0’自动换成\n’。