質問

あるC関数と同じ raw_input Python?

#in Python::
x = raw_input("Message Here:")

どのように書いていうような。

更新:

ここかエラー:

#include<stdio.h>
#include<string.h>
#include "stdlib.h"

typedef char * string;

int raw_input(string msg);
string s;
string *d;

main(){
raw_input("Hello, Enter Your Name: ");
d = &s;
printf("Your Name Is: %s", s);

}

int raw_input(string msg){
string name;
printf("%s", msg);
scanf("%s", &name);
*d = name;
return 0;
}

の誤差はそのプログラムの実行および印刷の信、どのユーザータイプのような入力は、c言語ではscanfがかかり、出口より..??

役に立ちましたか?

解決

あなたはかなり簡単に1を書くことができますが、バッファオーバーフローに注意することになるでしょう。

void raw_input(char *prompt, char *buffer, size_t length)
{
    printf("%s", prompt);
    fflush(stdout);
    fgets(buffer, length, stdin)
}

次に、このようにそれを使用します:

char x[MAX_INPUT_LENGTH];
raw_input("Message Here:", x, sizeof x);

あなたは、いくつかのエラーチェックを追加したい、などがあります。

他のヒント

POSIX.1-2008 基準を指定する機能 getline, に、動的に再配分のメモリをスペースのための任意の長さです。

この過 gets の紛失、滅失、き損があふれる一定のバッファの効 fgets れに対応できるラインの長さを犠牲にして可能性DoSの場合には、長くご利用ヒープスペース。

前POSIX2008支援、Glibcに晒されることGNU拡張しています。

char *input(const char *prompt, size_t *len) {
    char *line = NULL;
    if (prompt) {
        fputs(prompt, stdout);
        fflush(stdout);
    }
    getline(&line, len, stdin);
    return line;
}

忘れずに free(line) 後だったのです。


読み固定サイズのバッファに使用 fgets または scanf("%*c") やが似ている。これを指定することができる最大文字数をスキャンを防ぐため、あふれる固定バッファです。(理由はないも利用 gets, では、安全でない!)

char line[1024] = "";
scanf("%1023s", line);      /* scan until whitespace or no more space */
scanf("%1023[^\n]", line);  /* scan until newline or no more space */
fgets(line, 1024, stdin);   /* scan including newline or no more space */

を使用するには、読むためにあなたのプロンプトは、使用 printf に印刷するfgets返事ます。

は、選択の答えは私には複雑なようです。

私はこれは少し楽だと思います:

#include "stdio.h"

int main()
{
   char array[100];

   printf("Type here: ");
   gets(array);
   printf("You said: %s\n", array);

   return 0;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top