《c程序设计语言》读书笔记--字符串复制

#include <stdio.h>

#define		MAXLINE		10

int getLine(char s[], int lim);
void copy(char to[], char from[]);
int calcLen(char s[]);

int main()
{
	
	int len, index, row;
	char line[MAXLINE];
	char post_line[MAXLINE][MAXLINE];

	row = 0;
	while((len = getLine(line, MAXLINE)) > 0)
	{
		if(line[len-1] == '/n')	//判断读入的一行字符串的倒数第二个字符是否为'/n'
			index = len - 2;
		else
			index = len - 1;
		while(line[index] == ' ' || line[index] == '/t')   //消除字符串结尾的' '和'/t'
		{
				line[index] = line[index+1];
				line[index+1] = line[index+2];
				--index;
		}
		if(index > -1)
			copy(post_line[row++], line);	//如果line是全空格字符串,对其进行消除字符串结尾
                                                 // 处操作使得line成为一个空字符串,故不将其(空字
                                                 //符串)拷贝到post_line中。
	}

	for(index = 0; index < row; ++index)	//post_line针对其中每个字符串的倒数第二个
                                         //字符是否为'/n'在打印的时候做不同处理。
		if(post_line[index][calcLen(post_line[index])-1] != '/n')	
			printf("%s/n", post_line[index]);
		else
			printf("%s",post_line[index]);

	return 0;
}

int getLine(char s[], int lim)
{
	int i;
	char c;

	for(i = 0; i < lim-1 && (c = getchar()) != EOF && c != '/n'; ++i)
		s[i] = c;
	if(c == '/n')
	{
		s[i] = c;
		++i;
	}
	s[i] = '/0';
        fflush(stdin);			//每输入一行字符后(键入'/n'之后),清空输入缓冲区。

	return i;
}

void copy(char to[], char from[])
{
	int i;

	i = 0;
	while((to[i] = from[i]) != '/0')	
		++i;
	if(i == MAXLINE-1)
		to[i] = '/0';	
}

int calcLen(char s[])
{
	int i;

	i = 0;
	while(s[i] != '/0')
		++i;

	return i;
}


转载自:http://blog.csdn.net/roma823/article/details/6336895

 

posted @ 2014-10-28 22:30  司空格子Ored  阅读(217)  评论(0编辑  收藏  举报