我这有个代码在dev里运行输出不起来,在vs code里可以是为什么
/*从输入中获取n个字符,在读到第一个空白、制表符、换行符停止*/#include <stdio.h>
#define SIZE 81
char * q(char *a,int n);
int main(void){
char a;
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;
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;
}
页:
[1]