空白の配列

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
SDO

空白の配列

#1

投稿記事 by SDO » 9年前

2つの文字列を入力して文字列の合計分の空白を1つ目と2つ目の文字列の間に連結させたいのですが、空白を配列に格納し
うまく出力させることはできるのでしょうか?
よろしくお願いします。

コード:

#include<stdio.h>
#include<string.h>
#define MAX 100

void z(char *str1, char *str2, int n, char *str3);

int main(void)
{
	char a[MAX], b[MAX], c[MAX];
	int n, m, k;

	printf("文字列を入力\n");
	scanf("%s", a);

	printf("文字列を入力\n");
	scanf("%s", b);

	m = strlen(a);
	k = strlen(b);
	n = m + k;

	z(a, b, n, c);

	printf("%s\n", c);
	printf("空白:%d", n);

	return 0;
}

void z(char *str1, char *str2, int n, char *str3)
{
	char kara[MAX];
	int i, j;
	int r;

	for (i = 0; i > n; i++){

	}

	r = strcmp(str1, str2);
	if (r<0){
		strcpy(str3, str1);
		strcat(str3,kara);
		strcat(str3, str2);
	}
	else{
		strcpy(str3, str2);
		strcat(str3,kara);
		strcat(str3, str1);
	}

}

かずま

Re: 空白の配列

#2

投稿記事 by かずま » 9年前

SDO さんが書きました:2つの文字列を入力して文字列の合計分の空白を1つ目と2つ目の文字列の間に連結させたいのですが、空白を配列に格納し
うまく出力させることはできるのでしょうか?
そのプログラムでは strcmp() を使っていますが、
2つの文字列の順序に条件があるのでしょうか?

n個の空白文字列を作るのはこうでしょう。

コード:

    for (i = 0; i < n; i++) {
		kara[i] = ' '; 
    }
	kara[i] = '\0';
sprintf() を使えばもっと簡単に実現できます。

コード:

#include <stdio.h>   // printf, scanf, puts, sprintf
#include <string.h>  // strlen
 
#define MAX 100

int main(void)
{
    char a[MAX], b[MAX], c[MAX];  int n;

    printf("文字列を入力\n"); scanf("%s", a);
    printf("文字列を入力\n"); scanf("%s", b);
    n = strlen(a) + strlen(b);
    sprintf(c, "%s%*s%s", a, n, "", b);
    puts(c);
    printf("空白: %d\n", n);
    return 0;
}

閉鎖

“C言語何でも質問掲示板” へ戻る