また、行き詰ってしまいアドバイスをお願いします。
実行例の空白除去後のabc以外の文字を消すには、
どうしたらいいでしょうか?
実行環境は、
OS:windows XP
コンパイラ:VS
です。
問題
第1引数で渡された文字列の先頭と末尾の空白文字を取り除いた文字列を第2引数で
指定された領域に設定し、取り除いた空白文字の数を戻り地として返す関数を作成。
第2引数で指定された領域は、呼び出し元で空白を取り除いた文字列を格納するのに
十分なサイズの領域が指定されているものとする。
#include <stdio.h>
#include <stdlib.h>
#define NUMBER 33
int TrimStr(char str[/url], char str0[/url])
{
int i = 0;
int j = 0;
int len = 0; /* 文字列長 */
int SPcounter = 0; /* 空白文字のカウンター */
int frontDelSP = 0; /* 先頭の空白文字数 */
int strEOF = 0; /* 第1引数の末尾の空白文字の開始場所 */
/* 文字列長を求める */
while (str[len] != '\0') {
len++;
}
/* 先頭空白文字をカウント */
while (str == ' ') {
SPcounter = SPcounter + 1;
i++;
}
frontDelSP = SPcounter;
/* 末尾空白文字をカウント */
i = len - 1;
while (str == ' ') {
SPcounter = SPcounter + 1;
i--;
}
strEOF = i;
/* 領域の確保 */
str0 = malloc(len - SPcounter);
/* 空白を取除き、順次格納 */
i = frontDelSP;
while (i <= strEOF) {
str0[j] = str;
j++;
i++;
}
free(str0);
return SPcounter;
}
int main(int argc, char* argv[/url])
{
char str[NUMBE[/url] = {"0"};
char str0[NUMBE[/url];
int SPnum = 0;
printf("文字列 :");
gets(str);
printf("空白除去前:\"%s\"\n", str);
SPnum = TrimStr(str, str0);
printf("空白除去後:\"%s\"\n", str0);
printf("空白文字数:%d\n", SPnum);
return 0;
}
実行例
文字列 : abc
空白除去前:" abc "
空白除去後:"フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ abc "
空白文字数:4