c语言scanf函数输入单个字符%c用%s代替

用scanf(%s,
&flag)应该会有内存溢出错误。
太久没弄过c了,帮你顶下吧。

㈡ 如何在C语言中用scanf输入数组

#include

main()

{

struct

{

intnum;

charname[20];

charsex;

intage;

}stu[5];

inti;

for(i=0;i<5;i++)

{
printf("请输入信息 ");

scanf("%d",&stu[i].num);

scanf("%s",&stu[i].name);

scanf("%c",&stu[i].sex);//在%c之前加一个空格

scanf("%d",&stu[i].age);

}

for(i=0;i<5;i++)

{

printf("*%s*",stu[i].name);

}

}

拓展资料

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。



㈢ c语言怎么用scanf输入字符串

c语言用scanf输入字符串:
char s[300];
scanf("%s",s);
这个语句只能输入不包含空格和跳格键的字符串并且以回车符结束输入。

㈣ c语言,scanf 输入字符串问题

scanf("%s",str2)的实际操作是将str2作为一个指针,按照字符串(%s)来读取和识别标准输入的内容,并将读取到的内容存储到指针str2所指地址中。

你的str1被赋值为空(null),即为0,所有的系统均不会允许读写地址0上的内容,所以报错。

可以试着申请一个地址并赋值给str1,这样就能读写了,最后记得释放内存

#include<stdio.h>
#include<stdlib.h>

intmain(intargc,char*argv[])
{
char*str1=(char*)calloc(1,10);
scanf("%s",str1);
printf("%s",str1);
free(str1);
}

㈤ C语言用如何用scanf输入带有空格的字符串

要输入带空格的字符串,要用到一个格式字符:%[] --> 一个字符集。

“%[]”的作用是扫描字符集合:

例如:scanf(“%[^ ]”,str);

具体作用是:如果输入的字符属于方括号内字符串中某个字符,那么就提取该字符;如果一经发现不属于就结束提取。该方法会自动加上一个''到已经提取的字符后面。

#include <stdio.h>

int main()

{

char str[81];

printf("Please input a string: ");

scanf("%[^ ]",&str);

printf("The string is: %s ",str);

return 0;

}

(5)c语言scanf输入字符扩展阅读:

字符串函数应用:

1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn。

例:concat(‘11’,'aa’)='11aa’。

2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。

例:(‘abdag’,2,3)=’bda’。

3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。

例:s:=’abcde’;delete(s,2,3);结果s:=’ae’。

4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置。

例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’。

5. 求字符串长度 length(s) 例:length(‘12abc’)=5。

在ASP中 求字符串长度用 len(s)例: len("abc12")=5。

网络-扫描集

㈥ c语言关于字符串用scanf输入的问题

如果第一个是输入%s 第二个输入一个%c
那么由于 回车'键'在Windows系统中用"\n\r"两个字符表示,专所以由于scanf读入的问题只接受一属个以字符就会多余一个,而这个多余的就会被下一个输入字符所接受,所以才未输入就结束了。
这是在两个输入之间加入getchar()即可接受这个多余的字符。或者把输入字符串改为gets(str)。

㈦ C语言怎么用scanf输入字符串。

你的意思是输入多余的字符吧?
1、因为你用scanf输入的字符都是输入到缓冲区中的,例如你定义了一个只接受一个字符的变量ch,但却输入了多余的字符,这种情况会给编译器造成困扰,因为他并不完全智能,通常采用这种方法释放掉缓冲区内多余的字符输入;例如:
2、char ch;
scanf("%c", &ch);//假如你不小心输入了多个字符
//解决方法如下
while (‘\n’ != getchar())
{continue;}//这里的原理一不断的用getchar读取缓冲区内的字符,并将其废弃掉,直到遇到你输入的回车符(当然也可以是别的输入结束符);

㈧ C语言scanf,输入字符

你把scanf("%c\n",&c1)里的“\n”去掉就可以了。换行是根在printf里才可内以执容行的。scanf用于存储,

#include "stdio.h"
void main()
{
char c1,c2;
scanf("%c",&c1);
printf("%c,%d\n",c1,c1);
c2=c1+32;
printf("%c,%d\n",c2,c2);
}

㈨ C语言,scanf 输入字符问题

屏幕上输入的字符,会暂存到缓存。不信,你可以一直按着键盘,不多会,你就会听到系统发出嘟嘟的报警声,说明缓冲区已经满了。
scanf()函数只是从当前缓冲区取一个相应的字符;其中缓冲区的最后一个字符为'\n';
按你说的,可以用循环,接收字符同样可以用getchar()函数。
char ch;
while(1){
scanf("%c",&ch);
if(ch=='\n') break; /* 当输入回车时,结束 */
/* 对ch做相应处理 */
}

㈩ C语言中用scanf函数输入字符时,为什么要在输入控制符%c前面加空格用scanf还有哪些要注意

空格确实不是必须的,但有了空格就可以忽略你输入的空格。

例如:scanf(" %c" ,&c),你输入了' a'(a前面有个空格),a就能被c接受。

但控制符前如果没空格,那c就接受了空格,这个可以防止误操作,忽略空格输入,接受第一个非空格输入。

注意事项:

对于scanf()而言,%c是个较为特殊的说明符。 %c前没空格,scanf()将读取标准输入流中的第一个字符,%c前有空格,scanf()则读取标准输入流中第一个非空白字符,屏蔽了空白字符。


(10)c语言scanf输入字符扩展阅读:

scanf

C语言中常用的标准输入输出函数,它的常规用法是scanf(“输入格式”,输入地址),scanf从输入缓冲区取入数据按照指定的“输入格式”存储到指定的“输入地址”。

但是有一类问题通常令人头疼,那就是字符串的读入,此处仅仅讨论使用scanf读取字符串的一些问题。理论上你只需要定义一个字符指针,然后scanf每次读入字符存储到该指针所指的存储空间,之后指针值自动加1。