2016-09-18 193 views
-2

有沒有一種方法可以初始化一個空字符串數組,然後再請求來自用戶的輸入保存到字符串數組中,如果輸入較小,則留下空的前導空格。 我打算使用一個更長的字符串數組和空格,這樣我就可以進行字符替換。 例如:創建帶前導空格的字符串數組

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

結果是這樣的:

"this is a test  " 
+0

您的問題已經解決http://stackoverflow.com/questions/122616/how-do-i-trim-leading-trailing-whitespace-in-a-standard-way – denis

+3

http://ideone.com/ lJaJnJ – BLUEPIXY

+0

@BLUEPIXY我在開始時看到雙引號,最後我該如何擺脫這些?我原本從不想要他們 – Fenomatik

回答

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; 
} 

用法

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

只添加了單引號,所以你可以真正看到的空間被保留。 @BLUEPIXY的方法非常有意義,只是它將新的空白添加到輸入,您特別詢問了有關保留現有空白的輸入。

如果您想保留領先的空格,那麼也可以這樣做。