# You want to input a string with spaces?

When you want to read a string that may contain spaces from the console in C, using `scanf` alone may not be sufficient because `scanf` stops reading when it encounters a space character. Here are a few alternative approaches to read a string with spaces:

### 1\. Using `fgets`:

```c
#include <stdio.h>

int main() {
    char buffer[100];  // Adjust the size according to your needs

    printf("Enter a string with spaces: ");
    fgets(buffer, sizeof(buffer), stdin);

    // Remove trailing newline character if present
    int length = strlen(buffer);
    if (length > 0 && buffer[length - 1] == '\n') {
        buffer[length - 1] = '\0';
    }

    printf("You entered: %s\n", buffer);

    return 0;
}
```

`fgets` reads a line from the specified stream (in this case, `stdin`) and stores it in the provided buffer.

### 2\. Using `scanf` with the `%[^\n]` format specifier:

```c
#include <stdio.h>

int main() {
    char buffer[100];  // Adjust the size according to your needs

    printf("Enter a string with spaces: ");
    scanf(" %[^\n]", buffer);

    printf("You entered: %s\n", buffer);

    return 0;
}
```

The `%[^\n]` format specifier in `scanf` tells it to read characters until a newline is encountered.

### 3\. Using `getchar` in a loop:

```c
#include <stdio.h>

int main() {
    char buffer[100];  // Adjust the size according to your needs

    printf("Enter a string with spaces: ");

    int i = 0;
    int c;
    while ((c = getchar()) != '\n' && i < sizeof(buffer) - 1) {
        buffer[i++] = c;
    }
    buffer[i] = '\0';

    printf("You entered: %s\n", buffer);

    return 0;
}
```

This approach reads characters one by one until a newline is encountered.

Choose the method that best fits your requirements and coding style. Adjust buffer sizes as needed for your specific use case.
