Powered by SmartDoc

ソフトウェア概論A/B (2019/12/06)
Ver. 1.0

2019年12月6日
栗野 俊一
kurino@math.cst.nihon-u.ac.jp
http://edu-gw2.math.cst.nihon-u.ac.jp/~kurino/2019/soft/soft.html
ソフトウェア概論 A/B2019年12月6日 の資料

目次

講義資料

当日の OHP 資料

講議中に作成したプログラム

本日の課題

課題プログラム内の「/*名前:ここ*/」の部分を書き換え「/*この部分を完成させなさい*/」の部分にプログラムを追加して、プログラムを完成させます。

課題 20191206-01 : ライブラリ関数 strcpy と同じ振舞をする mystrcpy を作成しなさい

Download : 20191206-01.c

20191206-01.c
/*
 * 20191206-01-QQQQ.c
 *	ライブラリ関数 strcpy と同じ振舞をする mystrcpy を作成しなさい
 */

#include <stdio.h>
#include <string.h>		/* strcpy を利用する */

#define	EOS		'\0'

/*
 *	mystrcpy
 *		ライブラリ関数 strcpy と同じ振舞をする
 */

char *mystrcpy(char *dest, char *src) {
	int i;

	for ( i = 0; src[i] != EOS; i++ ) {
		/* i 番目の文字を src から dest にコピーする */

	/*
	**	 この部分を完成させなさい
	*/

	}
	
	dest[i] = EOS;	/* 最後に EOS を忘れないように.. */

	return dest;	/* 関数値は、コピー先の配列の先頭アドレス */
}


/*
 * main
 */

#define	STR_MAX	128

int main ( void ) {
	char s1[STR_MAX];
	char s2[STR_MAX];
	char s3[STR_MAX];
	char s4[STR_MAX];

	/* ライブラリ関数 strcpy の振舞 : 文字列から配列 */
	printf ( "strcpy ( s1, \"%s\" ) = \"%s\"\n", "abc123", strcpy ( s1, "abc123" ) );

	/*
	**	 この部分を完成させなさい
	*/


	/* mystrcpy の振舞 : 文字列から配列 */
	printf ( "mystrcpy ( s2, \"%s\" ) = \"%s\"\n", "abc123", mystrcpy ( s2, "abc123" ) );
	printf ( "s2 = \"%s\"\n", s2 );

	/* ライブラリ関数 strcpy の振舞 : 配列から配列 */
	printf ( "strcpy ( s3, \"%s\" ) = \"%s\"\n", s1, strcpy ( s3, s1 ) );
	printf ( "s3 = \"%s\"\n", s3 );

	/* mystrcpy の振舞 : 配列から配列 */

	/*
	**	 この部分を完成させなさい
	*/

	printf ( "s4 = \"%s\"\n", s4 );

	return 0;
}
20191206-01.c の実行結果
$ ./20191206-01-QQQQ.exe
strcpy ( s1, "abc123" ) = "abc123"
s1 = "abc123"
mystrcpy ( s2, "abc123" ) = "abc123"
s2 = "abc123"
strcpy ( s3, "abc123" ) = "abc123"
s3 = "abc123"
mystrcpy ( s4, "abc123" ) = "abc123"
s4 = "abc123"
$