C言語のプログラムについて教えてください。


char *words="abdcded";
char *words2;

Wordsに入っている文字列は固定していませが、もし、最後の2文字がedの場合はそのedを削除してword2にコピーします。この例の場合はword2はabcdです。

どのようなコーディング方法がありますでしょうか。教えてください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/11/28 16:34:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Vacuum No.2

回答回数55ベストアンサー獲得回数4

ポイント50pt

#include <stdio.h>

void main () {

char *words = {"abdcded"};
char *words2 = 0x00;
char *ptr = words+strlen(words)-2;

if (!strcmp(ptr,"ed")) {
ptr = 0x00;
words2 = words;
}
}

他1件のコメントを見る
id:Vacuum

ちなみにGCC?

2011/11/28 16:31:54
id:mai_mai_mail

ありがとうございます。
*ptr = 0x00;
で出来ました

2011/11/28 16:32:54

その他の回答1件)

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154

ポイント50pt

ベタな感じで書いてみました。

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

int main()
{
    char *words = "abcded";
    char *words2;
    int n;

    words2 = strdup(words);

    n = strlen(words2);
    if (words2[n - 2] == 'e' && words2[n - 1] == 'd') {
        words2[n - 2] = '\0';
    }

    printf("words2 = '%s'\n", words2);

    return 0;
}

ideone.com で、試したものです。
http://ideone.com/NPaKY

id:Vacuum No.2

回答回数55ベストアンサー獲得回数4ここでベストアンサー

ポイント50pt

#include <stdio.h>

void main () {

char *words = {"abdcded"};
char *words2 = 0x00;
char *ptr = words+strlen(words)-2;

if (!strcmp(ptr,"ed")) {
ptr = 0x00;
words2 = words;
}
}

他1件のコメントを見る
id:Vacuum

ちなみにGCC?

2011/11/28 16:31:54
id:mai_mai_mail

ありがとうございます。
*ptr = 0x00;
で出来ました

2011/11/28 16:32:54

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません