2016-09-18 27 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; 
} 

USAGE

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

をあなたが実際にスペースが保存されていた見ることができるように単一引用符のみが追加されました。 @BLUEPIXYのアプローチは、既存の空白を保存することについて具体的に尋ねた入力に新しい空白を追加する点を除いて、完璧な意味を持ちます。

先頭の空白を保持したい場合は、おそらく同様に行うことができます。

関連する問題