‘壹’ 简单的c语言问题,字符串的输入输出
你的写法没错,但是属于字符数组的输入输出。
C语言中字符串输入有以下方法:
例: char str[80];
1、基本输入语句: scanf("%s",str);
2、字符串专用输入函数: gets(str);
C语言中字符串输出有以下方法:
例: char str[80]="abcd";
1、基本输入语句: printf("%s",str);
2、字符串专用输入函数: puts(str);
‘贰’ C语言输入输出字符串
ch【5】缓冲区过短,导致溢出,ch【5】中只存了 你输入的前5个字符,限定输入用scanf(“%5s”,ch)就行了,这样ch中就是就是存的你数入的前5个字符,至于char ch;错误是因为格式化错误,即%s和ch不匹配,char ch【】在c语言中是不成立的,数组必须是定长的。
‘叁’ 在C语言中如何实现用键盘输入一个字符串,并打印出来
在C语言中实现用键盘输入一个字符串,并打印出来的解决方法如下:
1、首先定义一个字符串数组,如你可以给字符串100个数组空间。如图括号内数字即为你定义的数组大小。
(3)字符串的输入和输出c语言扩展阅读:
字符数组的输出:
(1)用putchar()或printf()的‘%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用putchar()赋值:
for(i=0;i<10;i++)
a[i]=putchar();
用printf()赋值:
for(i=0;i<10;i++)
printf("%c",a[i]);
输出结果为:
c program[2]
(2)用printf()的'%s'格式对数组赋值。还是对于数组a[10];
printf("%s",a);
输出结果为:
c program
参考资料来源:
网络-char
网络-字符数组
‘肆’ C 字符串和格式化输入与输出
1.前导程序
2.关于字符串
(1)字符串是一个或多个字符的序列。如"I am a student!"。
(2)C语言用空字符来标记一个字符串的结束。数组的单元数必须至少比要存储的字符数多1。
(3)字符串和字符。'x'和"x"的区别(后者是一个字符串由'x'和'\0'组成)。
(4)Sizeof()和strlen()函数。
同一个字符串,sizeof()把标志字符串结尾的空字符计算在内,长度比strlen()大1.
strlen()以 字符 为单位给出字符串的长度。sizeof()给出数组的长度(分配的内存单元)。
获取一个类型大大小~获取一个具体量的大小。sizeof(char)和sizeof (name)=sizeof name。
sizeof()和strlen()
3.常量和C预处理器
(1)常量如0.015。float taxrate=0.015。把常量0.015赋值给变量taxrate,但程序可能意外的改变它的值。
(2)两种方法const修饰符和#define预处理命令
const int MONTHS=12;
#define MONTHS +12;(#define TEE 'T')(#define OOPS "Now you have it!")
4.printf()函数
(1)printf():(“控制描述"+变量列表)~(变量使用的是值,无论该值是变量、常量、还是表达式)。
(2)printf()转换说明符:%c--一个字符、%d--有符号十进制整数、%e--浮点数e记数法、%、f--浮点数十进制、%p--指针、%%--打印一个%、%s--字符串...:
请避免不匹配的转换。
(3)printf()标志符:-(左对齐)、+(带符号)、#(...)、0(对所有数字格式,用前导0填充字段宽度)
打印一个字符串的前8个字符,字段宽度为8字符(%8.8s)
打印双引号\"....\"
打印一个字段宽度在参数列表中给定的八进制整数(%*0).
%5d(00006)
指定固定字段宽度(有效防止溢出)
(4)用printf()打印较长的字符串
a.采用多个printf()函数;
b.在一个printf()中采用(\)和回车键
c.采用字符串连接方法("Hello""world")
(5)printf()的函数返回值(返回所打印字符的数目,如果输出有误则返回-1,常用于检查输出错误。向文件中而非屏幕)
5.scanf()函数
(1)scanf()会在遇到第一个空白字符空格、制表符、或者换行符处停止读取。~gets()函数可以用来读取一个字符串。
(2)读取变量类型的值加&,把字符串读进一个字符数组不使用&。
(3)scanf("%d,%d",&n,&m)接受输入 1,2 {scanf("%c",&ch)读取在输入中遇到的第一个字符}
6.关于修饰符*
printf()中在字段宽度部分使用*来代替数字
scanf()中*使函数跳过相应的输出项目(scanf("%*d%*d%d",&n);前两个跳过)
‘伍’ c语言字符串数组怎么输入和输出呢
在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是:
puts():输出字符串并自动换行,该函数只能输出字符串。
printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还能输出其他类型的数据。
这两个函数相信大家已经非常熟悉了,这里不妨再演示一下,请看下面的代码:
#include <stdio.h>
int main(){
char str[] = "http://c.biancheng.net";
printf("%s ", str); //通过字符串名字输出
printf("%s ", "http://c.biancheng.net"); //直接输出
puts(str); //通过字符串名字输出
puts("http://c.biancheng.net"); //直接输出
return 0;
}
运行结果:
http://c.biancheng.net
http://c.biancheng.net
http://c.biancheng.net
http://c.biancheng.net
注意,输出字符串时只需要给出名字,不能带后边的[ ],例如,下面的两种写法都是错误的:
printf("%s ", str[]);
puts(str[10]);
(5)字符串的输入和输出c语言扩展阅读:
由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。
字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。
‘陆’ 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语言中如何输入输出字符串
在<string.h>头文件中用字符串处理函数输入和输出,gest用来输入,puts用来输出。
字符串输入函数gets,从键盘键入以回车结束的字符串放入字符数组中,并自动加’ '。输入串长度应小于字符数组维数,字符串中可以包含空格。
字符串输出函数puts,向显示器输出字符串(输出完,自动换行,即用' '替'