C言語の文字列の取り扱いが分かりません
こんにちは。
C言語で分からないことがあり、質問させていただきました。
学校で、文字列の取り扱いを習いました。
そこで質問なんですが、以下のソースコードをstrcpy , strcat , strcmp , strlen を使わずに書くことってできないですか?
先生に質問したところ、ポインタとかいうのを使うのだそうですが、それを使わずに書くことってできるんですか?もしよろしければお願いします。
以下のプログラムですが、ユーザーから2つの文字列を受けて、そこから4つの文字列関数を使ってみましょう、というやつです。実行結果も貼っておきますね。
#include <string.h>
#include <stdio.h>
int main(void)
{
char str1[80], str2[80];
int i;
printf("INPUT 1st word-line. : ");
gets(str1);
printf("INPUT 2nd word-line. : ");
gets(str2);
/*文字列(word-line)の長さを確認します。*/
printf("%s is %d moji long.\n", str1, strlen(str1));
printf("%s is %d moji long.\n", str2, strlen(str2));
/*文字列を比較します。*/
i = strcmp(str1, str2);
if (!i)
printf("two word-lines are same length.\n");
else if (i < 0)
printf("%s is smaller than %s.\n", str1, str2);
else
printf("%s is bigger than %s.\n", str1, str2);
/*十分なスペースがあるのなら、str2をstr1の最後に結合させます。*/
if((strlen(str1) + strlen(str2)) < 80 ){
strcat(str1, str2);
printf("%s\n", str1);
}
/*str2をstr1にコピーする*/
strcpy(str1, str2);
printf("%s %s\n", str1, str2);
お礼
前略 ・さっそくアドバイスありがとうございます。 ・ご指摘のとうり私の勘違いでした。 文字列の長さの問題ではなくて、配列の要素数不足が原因でした。 汗顔のいたりです。 以上