|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
/*从输入中获取n个字符,在读到第一个空白、制表符、换行符停止*/
#include <stdio.h>
#define SIZE 81
char * q(char *a,int n);
int main(void){
char a[SIZE];
int n;
scanf("%d",&n);
q(a,n);
puts(a);
return 0;
}
char * q(char *a,int n){
char *b;
b=a;
for(;a<a+n;a++){
*a=getchar();
if(*a==' '||*a=='\n'||*a=='\t'||*a=='\0')
break;
}
*a=0;
return b;
}
这行代码在dev里输出不出结果,只输出一个换行符。在vs code里输出有用,不知道为什么,问下哪个才是对的。
scanf之后缓冲区剩下一个回车字符,需要清除 否则影响后面的getchar函数读取
程序还有点小毛病,帮你修改了。
- /*从输入中获取n个字符,在读到第一个空白、制表符、换行符停止*/
- #include <stdio.h>
- #define SIZE 81
- void q(char *a,int n);
- int main(void){
- char a[SIZE];
- int n;
- scanf("%d",&n);
- q(a,n);
- puts(a);
- return 0;
- }
- void q(char *a,int n){
- char *b;
- b=a;
- getchar();//这里需要加一句,清除scanf剩余的回车字符,否则一进入循环就退出了。
- for(;a<b+n;a++){
- *a=getchar();
- if(*a==' '||*a=='\n'||*a=='\t'||*a=='\0')
- break;
- }
- *a='\0';
- a=b;
- }
复制代码
|
|