C言語で文字列から空白を削除する方法を教えて

C言語では、次のようにして文字列からスペースを削除できます。

  1. 文字列の各文字をループで走査し、空白文字でなければ新しい文字列にコピーする。
#include <stdio.h>
#include <string.h>

void deleteSpaces(char* str) {
    int len = strlen(str);
    char newStr[len];
    int j = 0;

    for (int i = 0; i < len; i++) {
        if (str[i] != ' ') {
            newStr[j++] = str[i];
        }
    }
    newStr[j] = '\0';

    printf("Original String: %s\n", str);
    printf("String without spaces: %s\n", newStr);
}

int main() {
    char str[] = "Hello World";
    deleteSpaces(str);

    return 0;
}
  1. ポインタを使って空白文字を削除するには、同様に文字列の各文字をループで繰り返し、文字が空白文字でなければポインタ操作で空白文字を直接削除します。
#include <stdio.h>
#include <string.h>

void deleteSpaces(char* str) {
    char* ptr = str;
    while (*str) {
        if (*str != ' ') {
            *ptr++ = *str;
        }
        str++;
    }
    *ptr = '\0';

    printf("Original String: %s\n", str);
    printf("String without spaces: %s\n", ptr);
}

int main() {
    char str[] = "Hello World";
    deleteSpaces(str);

    return 0;
}

2通りのやり方を示しましたが、いずれか一つを使っていただければ、文字列中のスペースを削除できます。

bannerAds