echo.c

#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* ARGSUSED */
int
main(int argc, char *argv[])
{
	int nflag;

	//setprogname(argv[0]);
	//(void)setlocale(LC_ALL, "");

	/* This utility may NOT do getopt(3) option parsing. */
        //从第二个参数开始检查,是否输入了字符串"-n",如果是,则nflag=1。指针跳到第三个参数,
        //如果不是,则nflag=0,指针保持在第二个参数。strcmp的比较结果是如果相等则为0.
        if (*++argv && !strcmp(*argv, "-n")) {
		++argv;
		nflag = 1;
	}
	else
		nflag = 0;
        //迭代每个输入参数(备注:第一个参数为可执行程序的名称。),并且输出输入参数,不换行,
	while (*argv) {
		(void)printf("%s", *argv);
                //输出每个参数后,输出一个空格。
                if (*++argv)
			(void)putchar(' ');
	}
        //如果nflag=0,表示没有输入字符串"-n",则输出换行符。
        if (nflag == 0)
		(void)putchar('\n');
	fflush(stdout);
	if (ferror(stdout))
		exit(1);
	exit(0);
	/* NOTREACHED */
}

echo的用法是,输出echo命令后面的内容并且输出换行符。如果制定了选项-n的话,则只输出内容,不输出换行符。


Java版本Echo

public class Echo
{
	public static void main(String[] args)
	{
		boolean signed=false;
		int i=0;
		if(args.length>0)
		{
			if(args[0].equals("-n"))
			{
				signed=true;
				i=1;
			}
		}
		
		for(;i<args.length;i++)
		{
			String arg=args[i];
			System.err.print(arg);
			if(i<args.length-1)
			{
				System.err.print(" ");
			}
		}
		if(!signed)
		{
			System.err.println();
		}
	}
}

你可能感兴趣的:(c,源码,netbsd)