昨日、Javaのバックグラウンドを持つObjective-Cでプログラミングを始めたばかりで、迷子になっています。私は動作するプログラムを持っています。その目的は、コンソールから人の名前、年齢、体重を取得し、それらの値をユーザーに出力することです。私の問題は、コンソールにデータを入力すると、入力した最初の文字だけが表示されることです。その後、文字列の他の文字は表示されません。それで、ここに私のポイントを示すためのいくつかのサンプルコンソールデータがあります。
コンソール:
2012-11-14 17:56:05.673 Tutorial[1757:403] Please Enter In Your Name
warning: this program uses gets(), which is unsafe.
C
2012-11-14 17:56:09.494 Tutorial[1757:403] Please Enter Your Age
1
2012-11-14 17:56:11.239 Tutorial[1757:403] Please Enter Your Weight
2
2012-11-14 17:56:13.205 Tutorial[1757:403]
Name: Chris
Age: 18
Weight: 200
ご覧のとおり、入力した内容の最初の文字のみが表示されますが、実際には入力文字列が使用されます。一体なぜこれが起こっているのですか?
関数宣言:
#import "Person.h"
Person * readPersonData (Person * object);
void writePersonInformation(Person * object);
主な方法:
int main (int argc, const char * argv[])
{
@autoreleasepool
{
Person * p1 = [[Person alloc] init];
p1 = readPersonData(p1);
writePersonInformation(p1);
}
}
関数の実装:
Person * readPersonData (Person * object)
{
char nameCharacters[100];
NSString * objectName;
int objectAge, objectWeight;
NSLog(@"Please Enter In Your Name");
gets(nameCharacters);
objectName = [[NSString alloc] initWithUTF8String:nameCharacters];
[object setName : objectName];
NSLog(@"Please Enter Your Age");
scanf("%i", &objectAge);
[object setAge : objectAge];
NSLog(@"Please Enter Your Weight");
scanf("%i", &objectWeight);
[object setWeight : objectWeight];
return object;
}
void writePersonInformation(Person * object)
{
NSLog(@"\nName: %@ \nAge: %i \nWeight: %i", object.getName, object.getAge, object.getWeight);
}