【C言語】文字列から改行を削除する方法を解説

この記事では、C言語で文字列から改行を削除する方法を解説します。

目次から探す

改行を削除する方法

改行文字を削除する方法には、文字列内の改行文字を置換する方法と、文字列内の改行文字を削除する方法の2つがあります。

方法1: 文字列内の改行文字を置換する

改行文字を置換する方法では、まず改行文字を検索し、その後に置換する文字列を挿入します。

以下の手順で実装します。

strchr関数を使った改行文字の検索

まず、strchr関数を使って文字列内に改行文字が存在するかどうかを検索します。

改行文字は\nと表されます。

もし改行文字が見つかれば、その位置を示すポインタを返します。

strncpy関数を使った改行文字の置換

改行文字が見つかった場合、strncpy関数を使って改行文字以降の文字列を別の文字列にコピーします。

これにより、改行文字を置換することができます。

完成したコード

以下に、改行文字を置換するためのサンプルコードを示します。

#include <stdio.h>
#include <string.h>
void replaceNewline(char* str, char replaceChar) {
    char* newlinePos = strchr(str, '\n');
    if (newlinePos != NULL) {
        strncpy(newlinePos, &replaceChar, 1);
    }
}
int main() {
    char str[] = "Hello\nWorld";
    replaceNewline(str, '-');
    printf("%s\n", str);
    return 0;
}

上記のコードでは、文字列Hello\nWorldの中の改行文字\nをハイフン-に置換しています。

実行結果はHello-Worldとなります。

方法2: 文字列内の改行文字を削除する

改行文字を削除する方法では、改行文字を検索して削除します。

以下の手順で実装します。

strchr関数を使った改行文字の検索

まず、strchr関数を使って文字列内に改行文字が存在するかどうかを検索します。

改行文字は\nと表されます。

もし改行文字が見つかれば、その位置を示すポインタを返します。

strcpy関数を使った改行文字の削除

改行文字が見つかった場合、strcpy関数を使って改行文字以降の文字列を前に詰めます。

これにより、改行文字を削除することができます。

完成したコード

以下に、改行文字を削除するためのサンプルコードを示します。

#include <stdio.h>
#include <string.h>
void removeNewline(char* str) {
    char* newlinePos = strchr(str, '\n');
    if (newlinePos != NULL) {
        strcpy(newlinePos, newlinePos + 1);
    }
}
int main() {
    char str[] = "Hello\nWorld";
    removeNewline(str);
    printf("%s\n", str);
    return 0;
}

上記のコードでは、文字列Hello\nWorldの中の改行文字\nを削除しています。

実行結果はHelloWorldとなります。

以上が、C言語で文字列から改行を削除する方法です。

どちらの方法も、文字列操作の基本的な関数を使って実装することができます。

目次から探す