Objective-C文件创建错误

时间:2012-05-31 21:51:48

标签: objective-c xcode file-io nsstring nsdata

我正在创建一个简单的命令行工具,用户输入用户名和密码(我不关心加密 因为这只是一个练习),他们的年龄和这些数据被写入一个文件。这是我的代码:

    char username[40];
    char password[40];
    int age = 0;
    NSString *path = [NSString stringWithFormat:@"%@/Documents/config.txt", NSHomeDirectory()];
    NSFileManager *fileManager = [[NSFileManager alloc]init];

    //Username Input
    NSLog(@"Pick a username (less then 40 letters):");
    scanf("%s", username);
    NSString *usernameString = [[NSString alloc] initWithBytes:username
                                                            length:39 
                                                          encoding:NSUTF8StringEncoding];

    //Password Input
    NSLog(@"Pick a password (less then 40 letters):");
    scanf("%s", password);
    NSString *passwordString = [[NSString alloc] initWithBytes:password
                                                        length:39 
                                                      encoding:NSUTF8StringEncoding];
    //Age Input
    NSLog(@"What's your age?");
    scanf("%i", &age);

    NSString *finalContents = [NSString stringWithFormat:@"%@\n%@\n%i", usernameString, passwordString, age];
    NSData *dataContent = [finalContents dataUsingEncoding:NSUTF8StringEncoding];
    [fileManager createFileAtPath:path contents:dataContent attributes: nil];

当我打开生成的文件时,它有内容:

(null)
(null)
18

我为用户名和密码输入了一个少于40个字符的字符串,并为该年龄输入了数字18,因此看起来只有年龄才有效。 谢谢你提前。

编辑:该文件的内容为“(null)(null)18”,中间有换行符,但它们没有显示在我的帖子中。

1 个答案:

答案 0 :(得分:1)

尝试使用stringWithCString:encoding: