no1.c
//设计并测试一个函数,从输入中获取n个字符(包括空白,制表,换行符),把结果储存
//在一个数组里,他的地址被传递作为一个参数
# include <stdio.h>
# include <string.h>
# define SIZE 100
char * get_input(char * st , int size);
int main(void)
{
char st[SIZE] ;
if (get_input(st , SIZE))
puts(st);
return 0 ;
}
char * get_input(char * st , int size)
{
char * str = NULL ;
str = fgets(st , size , stdin);
return str ;
}
no2.c
//修改编程练习1的函数,在n个字符后停止,或在读到第一个空白,制表符或换行符时候停止
//那个先遇到那个停止.不能只使用scanf()
# include <stdio.h>
# include <string.h>
# include <ctype.h>
# define SIZE 100
char * get_input(char * st , int size);
int main(void)
{
char st[SIZE] ;
if (get_input(st , SIZE))
puts(st);
return 0 ;
}
char * get_input(char * st , int size)
{
char * ret_val = NULL ;
if (ret_val = fgets(st , size , stdin))
{
while (*st)
{
if (isspace(*st))
{
*st = '\0' ;
break ;
}
st++ ;
}
}
return ret_val ;
}
no3.c
//设计并测试一个函数,从一行输入中把一个单词读入一个数组中,并
//丢弃输入行中的其余字符.该函数应该跳过第一个非空白字符前面所
//有空白.将一个单词定义为没有空白,制表符或换行符的字符序列.
# include <stdio.h>
# include <ctype.h>
# define SIZE 40
long get_word( char * st);
int main(void)
{
char word[SIZE] ;
long num = 0 ;
num = get_word(word) ;
if (num)
printf("This word is %ld char : %s\n" , num , word);
return 0 ;
}
long get_word( char * st)
{
// no prev curr result
// 1 0 0
// 2 0 1 单词开始
// 3 1 1 单词中
// 4 1 0 单词结束
//判断条件 1 , 2 , 3 可以合并为一个判断条件 结果是单词开始
//4 为单词结束判断条件.
int prev , curr ;
long num = 0 ;
while ((curr = getchar()) != '\n')
{
if (isalpha(curr))
st[num++] = curr ;
else if (isalpha(prev))
{
st[num] = '\0' ;
while (getchar() != '\n') ;
break ;
}
prev = curr ;
}
return num ;
}
no4.c
//设计并测试一个函数,他类似编程练习3的描述,只不过他接受第二个参数指明可读取的最大字符数.
# include <stdio.h>
# include <ctype.h>
# define SIZE 4
long get_word( char * st , long n);
int main(void)
{
char word[SIZE] ;
long num = 0 ;
num = get_word(word , SIZE) ;
if (num)
printf("This word is %ld char : %s\n" , num , word);
return 0 ;
}
long get_word( char * st , long n)
{
// no prev curr result
// 1 0 0
// 2 0 1 单词开始
// 3 1 1 单词中
// 4 1 0 单词结束
//判断条件 1 , 2 , 3 可以合并为一个判断条件 结果是单词开始
//4 为单词结束判断条件.
int prev , curr ;
long num = 0 ;
long i ;
for (i = 0 ; i < n - 1 && ((curr = getchar()) != '\n'); i++)
{
if (isalpha(curr))
st[num++] = curr ;
else if (isalpha(prev))
{
st[num] = '\0' ;
while (getchar() != '\n') ;
break ;
}
prev = curr ;
}
st[i] = '\0' ;
return num ;
}
no5.c
//设计并测试一个函数,搜索第1个函数形参指定的字符串,在其中查找第2个函数形参指定的字符
//首次出现的位置.如果成功,该函数返回该字符的指针,如果在字符中未找到指定的字符,则返回
//空指针(该函数的功能与strchar()函数相同).在一个完整的程序中测试该函数,使用一个循环
//给函数提供输入值.
# include <stdio.h>
char * instr(const char * st , char ch);
int