ある機能をCと同じraw_input Python?
質問
ある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;
}
所属していません StackOverflow