C语言,求助,,,字符串问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 19:07:22
如下:
int a[50]; scanf("%s",a); printf("%s",a);
上面,如果我在输入的时候,输入"zhong guo ren "的话,在输入的时候,屏幕只出现"zhong",也就是说,后面加了空格后,他就不读取后面的字符了,这是为什么?

在若:int a[50] gets(a); puts(a)
用这个输入字符串的话,我输入"zhong guo ren "(不含引号),在屏幕上输出的就是"zhong guo ren" 为什么
为什么scanf函数和gets函数输入实现的功能不同,scanf怎么才能做到想gets那做???
补充一下,上面定义,我刚才打错字了把 int a[50] 该成 char a[50]

scanf不能完全取代gets
scanf里面我们无法输入空格,当你输入空格时,空格后面的内容就没有放到你指定的变量里面。例如
char a[4];
scanf ("%s",a);//输入一个字符串,%s是表示字符串
for (i=0;i<=4;i++)
printf("%c",a[i]);
运行的时候你输入i am试试,它得到的是i,而后面的 空格和am就没有了。
换句话说,scanf当遇到空格时,它就把它当做'\0',就是自动停止
如果你用gets的话
char a[4];
a=gets();//输入一个字符串,%s是表示字符串
for (i=0;i<=4;i++)
printf("%c",a[i]);
你还是输入i am的到的就是i am

而printf和puts没什么区别

这是我刚百度的呵呵,scanf 遇到空字符(空格,tab等)就会结束,没法改变的。scanf和gets 各有千秋。gets和puts只针对字符串输入、输出比较专业,scanf和printf可以处理其它类型的变量。如果能替代,就不能满足不同的要求了。嚎~~~

上面说的都不错

这里多说一点:

其实scanf()也是可以读取带空格的字符串的,只是格式化字符串不是%s而是%[^\n]

例如:

#include<stdio.h>

int main()
{
char a[50];
scanf("%[^\n]", a);
printf("%s", a);
return(0);
}

输入 zhong guo ren
输出 zhong guo ren

C语言字符串问题 C语言的字符串问题... c语言.字符串指针问题 c语言字符串小问题 关于C语言字符串问题 c语言字符串概念问题???? c语言 输入字符串问题 C语言字符串的问题 字符串排序c语言问题~ C语言字符串比较函数的问题