按照下述要求分别实现read_line函数:
(a)在开始存储输入字符前跳过空白字符。
(b)在读入第一个空白字符时停止。提示:调用isspace函数来检查字符是否为空白字符。
(c)在读入第一个换行符时停止,然后把换行符存储到字符串中。
答:
(a)程序如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *read_line(char *p);
int main()
{
char sec[20];
read_line(sec);
puts(sec);
system("pause");
exit(0);
}
char *read_line(char *p)
{
char *p1=p;
char ch;
ch=getchar();
while(ch=='\0'||ch==' '||ch=='\t')
ch=getchar();
*p1=ch;
for(p1++;*(p1-1)!='\n';)
*p1++=getchar();
*(p1-1)='\0';
return p;
}
(b)程序如下:
#include<stdio.h>
#include<stdlib.h>
char *read_line(char *a);
char isspace(char *p);
#define STR_LEN 20
int main()
{
char sec[STR_LEN+1];
puts("Enter a sentence:");
read_line(sec);
puts(sec);
system("pause");
return 0;
}
char isspace(char *p)
{
*p=getchar();
if(*p=='\0'||*p=='\t'||*p=='\n'||*p==' ')
return *p='\0';
else return *p;
}
char *read_line(char *a)
{
char *p,ch;
for(p=a;p<a+STR_LEN-1;p++)
if(ch=isspace(p)=='\0')
break;
if(p==a+STR_LEN)
*p='\0';
return a;
}
(c)程序如下:
#include<stdio.h>
#include<stdlib.h>
#define STR_LEN 20
char *read_line(char *a);
int main()
{
char str[STR_LEN+1];
puts("Enter a sentence:");
read_line(str);
puts(str);
system("pause");
return 0;
}
char *read_line(char *a)
{
char ch,*p=a;
scanf("%c",&ch);
while(ch!='\n')
{
*p++=ch;
ch=getchar();
}
*p='\n';
*(p+1)='\0';
return a;
}