你的問題是不一致的,你問前導空格,但你的例子顯示了尾隨空白。如果你的意思是結尾的空白,你可以這樣來做:
#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;
}
用法
> ./a.out
this is a test
'this is a test '
>
只添加了單引號,所以你可以真正看到的空間被保留。 @BLUEPIXY的方法非常有意義,只是它將新的空白添加到輸入,您特別詢問了有關保留現有空白的輸入。
如果您想保留領先的空格,那麼也可以這樣做。
您的問題已經解決http://stackoverflow.com/questions/122616/how-do-i-trim-leading-trailing-whitespace-in-a-standard-way – denis
http://ideone.com/ lJaJnJ – BLUEPIXY
@BLUEPIXY我在開始時看到雙引號,最後我該如何擺脫這些?我原本從不想要他們 – Fenomatik