使用前导空格创建字符串数组

时间:2016-09-18 01:01:07

标签: c arrays string

有没有办法我可以初始化一个空字符串数组,然后再请求用户输入一个保存到字符串数组中的输入,如果输入较小则留下空的前导空格。 我打算使用一个带有附加空格的较长字符串数组,这样我就可以进行字符替换。 例如:

char foo[25];
scanf(%s,foo);
foo = this is a test"
print foo; 

结果如下:

"this is a test      "

1 个答案:

答案 0 :(得分:0)

你的问题不一致,你问领先的空格,但是你的例子显示了尾随的空格。如果你的意思是尾随空格,你可以这样做:

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

#define BUFFER_SIZE 25

int main() {

    char string[BUFFER_SIZE];
    memset(string, ' ', BUFFER_SIZE - 1); // initialize with spaces
    string[BUFFER_SIZE - 1] = '\0'; // terminate properly

    if (fgets(string, BUFFER_SIZE, stdin) != NULL) {

        size_t length = strlen(string);

        string[length - 1] = ' '; // replace the newline \n

        if (length < BUFFER_SIZE - 1) {
            string[length] = ' ';  // replace extra '\0' as needed
        }

        printf("'%s'\n", string); // extra single quotes to visualize length
    }

    return 0;
}

<强> USAGE

> ./a.out
this is a test
'this is a test          '
> 

仅添加了单引号,因此您实际上可以看到空格被保留。 @BLUEPIXY的方法非常有意义,除了它将新的空格添加到您明确要求保留现有空格的输入中。

如果您希望保留前导空格,那么也可以这样做。