有没有办法我可以初始化一个空字符串数组,然后再请求用户输入一个保存到字符串数组中的输入,如果输入较小则留下空的前导空格。 我打算使用一个带有附加空格的较长字符串数组,这样我就可以进行字符替换。 例如:
char foo[25];
scanf(%s,foo);
foo = this is a test"
print foo;
结果如下:
"this is a test "
答案 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的方法非常有意义,除了它将新的空格添加到您明确要求保留现有空格的输入中。
如果您希望保留前导空格,那么也可以这样做。