㈠ c语言字符串gets(str)
在scanf("%c",&ch);之后加上getchar();
#include<stdio.h>
int main(void)
printf("Input a character: ");
scanf("%c",&ch);
fflush(stdin);//加上这句,清掉输入字符后,你再输入的回车符
printf("Input a string: ");
char str[80];
gets(str);
printf("%c ",ch);
puts(str);
return 0;
}
字符串
因为本函数可以无限读取,易发生溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值。
这个事实导致gets函数只适用于玩具程序,为了避免这种情况,可以用fgets(stdin) (fgets实际上可以读取标准输入,即大多数情况下的键盘输入),具体参阅fgets词条)来替换gets()。在V7的手册中说明:为了向后兼容,gets删除换行符,gets并不将换行符存入缓冲区。
以上内容参考:网络-gets
㈡ C语言当用户要求输入的字符串中含有空格时,应使用的输入函数是什么啊
用gets()函数;gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。
功能
从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。
返回值
读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。
(2)c语言用户字符串扩展阅读:
gets()函数用法:
示例
1、C:
#include
<stdio.h>
//这个头文件包含gets()函数,这个函数在ISO/IEC
9899
2011(C11)标准中被移除
int
main(void)
{
char
str1;
//不要char*p,然后gets(p),这是错误的,因为p没有指向有效的内存,它可能指向任何非法地址//地方的未知大小的内存块,这样以来,就可能修改了不属于本程序的内存的内容
gets(str1);
printf("%s\n",
str1);
return
0;
}
#include
<stdio.h>//gets_s()用法
#define
CH
20
int
main(void)
{
char
ch[CH];
printf("请输入你的名字:\n");
gets_s(ch,CH);
//这里不能用gets_s(ch);
printf("这是你的名字:%s\n",
ch);
return
0;
}
2、C++:
#include
<iostream>
#include
<cstdio>
using
namespace
std;
int
main()
{
char
str[100];
gets(str);
cout<<str<<endl;
return
0;
}
gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:
gets(s);其中s为字符串变量(字符串数组名或字符串指针)。
gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s)
函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。
也就是说:gets()函数读取到\n(我们输入的回车)于是停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。
㈢ C语言程序设计,用户输入一个字符串,一个字符,统计该字符在字符串中出现的次数。写出程序,加急
#include<stdio.h>
main()
{char s[99],c;
int i=0,n=0;
printf("输入字符串(按Enter结束):\n");
gets(s);
printf("输入字符(按Enter结束):");
c=getchar();
for(i=0;i<99;i++)
{if(c==s[i])
n++;
}
printf("字符串%s中字符%c出现%d次",s,c,n);
}
//看时间,你是用不到了,留个要学习的看吧。(字符串中可能有空格,所有不要用scanf函数for循环获取)
㈣ C语言:字符串输入与输出
#include
<stdio.h>
int
main()
{
char
str1[21]
=
{0},
str2[21]
=
{0},
str3[21]
=
{0};
//
getchar实现
printf("请输入一个长度不超过20的字符串(getchar实现):");
int
c
=
0,
i
=
0;
while
((c
=
getchar())
!=
'\n')
{
str1[i++]
=
c;
}
//
scanf实现
printf("请输入一个长度不超过20的字符串(scanf实现):");
scanf("%s",
str2);
getchar();
//
取走缓冲区的换行符
//
gets实现
printf("请输入一个长度不超过20的字符串(gets实现):");
gets(str3);
//
putchar输出
printf("putchar输出:");
i
=
0;
while
(str1[i]
!=
'\0')
{
putchar(str1[i++]);
}
//
printf输出
printf("\nprintf输出:");
printf("%s\n",
str2);
//
puts输出
printf("puts输出:");
puts(str3);
printf("\n");
return
0;
}
问题答案:
1.
getchar可以根据用户自定义的字符结束输入,不受换行符和空白字符的限制
2.
scanf不能输入空格,另外两个可以
3.
在保证数据不会超出内存范围的情况下,用gets和puts最方便
不存在空白字符的情况下,用scanf最方便
如果既有空白字符,又可能越界的情况下,getchar最方便
㈤ C语言中什么是字符,什么是字符串啊,谢谢
C语言中单引号的是字符,双引号的是字符串。
1、字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。字符在计算机内存放,应规定相应的代表字符的二进制代码。代码的选用要与有关外围设备的规格取得一致。
2、字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的。
它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。
(5)c语言用户字符串扩展阅读
C语言字符串的使用
用来存放字符的数组称为字符数组,例如:
charc[10];
字符数组也可以是二维或多维数组。例如:
charc[5][10];
字符数组也允许在定义时进行初始化,例如:
charc[10]={'c','','p','r','o','g','r','a','m'};//c[9]未赋值,所以为默认值’ ’
当对全体元素赋初值时也可以省去长度说明。例如:
charc[]={'c','','p','r','o','g','r','a','m'};
这时c数组的长度自动定为9。
字符数组和普通数组一样,也是通过下标引用各个元素。
㈥ C语言编写程序,要求用户输入字符串,程序判定字符串的真假,若为真则返回另一个值
单纯判断字符串,用strcmp函数比较两个字符串,相同返回0。
要比较,首先需要有数据,像你举例的,判断输入姓名,那么首先要有一堆数据里面存放了姓名班级等对应信息,这些信息可存放在数据库或文件,也可直接放在数组及链表中。之后通过循环遍历这些数据,将里面的姓名分别和输入的姓名比较,相同就输出其具体信息。
㈦ c语言中如何输入输出字符串
在<string.h>头文件中用字符串处理函数输入和输出,gest用来输入,puts用来输出。
字符串输入函数gets,从键盘键入以回车结束的字符串放入字符数组中,并自动加’ '。输入串长度应小于字符数组维数,字符串中可以包含空格。
字符串输出函数puts,向显示器输出字符串(输出完,自动换行,即用' '替'