字符串以scanf函数输入问题
#include 《stdio.h》
int main ()
{
char ch;
printf(“请输入:“);
scanf(“%[^\n]“,&ch); //表示 不存放 换行键 其他键值都可以存入ch中
printf(“%s\n“,ch);
}
用scanf输入字符串
-
s与&s都表示地址,且值相等。
-
s与&s类型不一样,s的类型为char *,&s的类型为char (*),即指向一行有10个字符的指针。
-
在scanf(“%s“,&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf(“%s“,(char *)&s);
扩展资料:
-
scanf()是C语言中的一个输入函数。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
-
scanf的发展:使用scanf函数进行输入,必须指定输入的数据的类型和格式,不仅繁琐复杂,而且很容易出错。C++保留scanf只是为了和C兼容,以便过去用C语言写的程序可以在C++的环境下运行。C++的编程人员都愿意使用cin进行输入,很少使用scanf。
参考资料:百度百科——scanf
c语言关于字符串用scanf输入的问题
如果第一个是输入%s 第二个输入一个%c
那么由于 回车’键’在Windows系统中用“\n\r“两个字符表示,所以由于scanf读入的问题只接受一个以字符就会多余一个,而这个多余的就会被下一个输入字符所接受,所以才未输入就结束了。
这是在两个输入之间加入getchar()即可接受这个多余的字符。或者把输入字符串改为gets(str)。
用scanf()如何正确输入多个字符型数据,有哪些方法
在控制字符串的%前加一个空格,这个问题就迎刃而解了。这个空格可以吸收掉上次接收字符时遗留在输入缓冲区里的连续多个广义空格(即’ ’、’\t’、’\n’等),且能避免在scanf函数前增设语句getchar();、fflush(stdin);等存在的漏洞。请看以下举例代码:
//#include “stdafx.h“//If the vc++6.0, with this line.
#include “stdio.h“
int main(void){
char a,b,c,d,e,f;
scanf(“ %c %c %c %c %c %c“,&a,&b,&c,&d,&e,&f);//每个%前有个空格
printf(“%c %c %c %c %c %c\n“,a,b,c,d,e,f);
return 0;
}
如何获得用scanf函数从键盘输入的字符串
#include
int
main()
{
char
a;
printf(“输入一字符串:\n“);
scanf(“%s“,a);
printf(“输入的字符串为:\n“);
printf(“%s\n“,a);
return
0;
}
/*注:用scanf()输入字符串,字符串中不能有空格,
否则系统会在空格处判断为已停止输入,这时最好用gets()
函数,它能接受输入直到你输入回车,用法
:gets(a)*/
C++用scanf读入字符串
#include《stdio.h》
void main()
{
char s1,s2,s3;
scanf(“%s%s%s“,s1,s2,s3);
printf(“%s %s %s\n“,s1,s2,s3);
}
scanf怎么输入string
1 s与&s都表示地址,且值相等。
2 s与&s类型不一样,s的类型为char *,&s的类型为char (*),即指向一行有10个字符的指针。
3 在scanf(“%s“,&s);语句中,&s有一个隐含的强制类型转换,即相当于scanf(“%s“,(char *)&s);
scanf函数 字符串输入问题
1. scanf在用%s时,是指输入一个字符串,不用&,因为字符数组的名字本身就代表是这个数组的首地址,已经是地址了,再加&就错误了。
2.用%c时,是输入一个字符,那么这个字符必须加&,才能放入相应字符变量的地址里,这是不加&,也错了。
C语言 关于scanf输入字符串的问题
name=%s num=%d 它会按照你的格式来进行接收字符串到 一个内存地址中,但这个地址并不是 你定义的 name 和 num ,而是 stdin 这个结构体中 _base 成员 指向的数据区,这个数据区叫 做 输入缓冲出,同理 还有 输出缓冲区 :stdout._base 。 scanf 会接收 全部信息(是你格式中定义的,如 name= num= 当然还有一个空格)也就是说 这些东西都要输入,把这些信息接收到 stdin._base里面,然后再 比较数据与已经定义的格式 name=%s num=%d 的匹配情况,将相应的值 再分配到 自己定义的缓冲区中。
你的问题 是 输入空格是不是代表字符串结束了?
scanf 里面 一般来说是不接收空格的,但是有例外 ,如 你上面的例子,在格式控制里 有 空格,接收的时候 它就占一个 位置,也就是你按空格的时候 它在之后会和 你定义的格式控制里的空格匹配。
C语言用如何用scanf输入带有空格的字符串
要输入带空格的字符串,要用到一个格式字符:% –》 一个字符集。
“%”的作用是扫描字符集合:
例如:scanf(“%[^\n]”,str);
具体作用是:如果输入的字符属于方括号内字符串中某个字符,那么就提取该字符;如果一经发现不属于就结束提取。该方法会自动加上一个’\0’到已经提取的字符后面。
#include 《stdio.h》
int main()
{
char str;
printf(“Please input a string:\n“);
scanf(“%[^\n]“,&str);
printf(“The string is:\n%s\n“,str);
return 0;
}
扩展资料:
字符串函数应用:
1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn。
例:concat(‘11’,’aa’)=’11aa’。
2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。
例:copy(‘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。
参考资料:
百度百科-扫描集