2016-04-12 43 views
0

私はfgets(username、20、stdin)を使ってみました。 fgets(パスワード、20、標準); POSTフォームの入力を渡すときに私のCプログラムの入力を受け取りますが、ユーザ名の最後に&を追加します...どうすればこの問題を回避できますか?CGIからの投稿投稿フォーム

私の質問は次のようなものです:ユーザー名とパスワードの入力を解析すると、どうやら文字列の代わりにボックスに実際に入力したものだけを得ることができますか?

答えて

1

これは、fgetsがストリームから19文字以上も取得するため、改行や「&」で停止しないためです。次のように書式設定された入力にsscanfを使用できます。

#include <stdio.h> 

int main(void) { 
    char *form = "user=foo&password=bar"; 

    char user[32]; 
    char passwd[32]; 

    int ret = sscanf(form, "user=%[^&]&password=%[^&]", user, passwd); 
    if (ret != 2) { 
     fprintf(stderr, "invalid form\n"); 
     return 0; 
    } 

    printf("user is %s, passwd is %s\n", user, passwd); 
    return 0; 
}