【问题标题】:Input a string from console using Objective C使用 Objective C 从控制台输入字符串
【发布时间】:2014-03-13 03:32:13
【问题描述】:

我正在尝试使用 Objective C 从命令行输入一个字符串(或多个整数)。这些数字用空格分隔。

样本输入:1 2 3 4 5

我正在尝试代码

char input[100] = {0};
NSString *inputString;
scanf("%s", input);
inputString = [NSString stringWithCString:input encoding:NSUTF8StringEncoding];

inputString 的结果值为 1。

如何将整个值放入字符串中?

【问题讨论】:

标签: objective-c


【解决方案1】:
NSLog(@"Enter the string : ");
NSFileHandle *input = [NSFileHandle fileHandleWithStandardInput];
NSData *inputData = [NSData dataWithData:[input availableData]];
NSString *inputString = [[NSString alloc] initWithData:inputData encoding:NSUTF8StringEncoding];
inputString = [inputString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"%@", inputString);

这里在将目标 C 作为工作语言时尝试更精确

【讨论】:

  • 减少行数我猜.... [[[NSString alloc] initWithData:[[NSFileHandle fileHandleWithStandardInput] availableData] encoding:NSUTF8StringEncoding] stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
  • @KijitDesai 确实更有意义减少行数,就像一个魅力。
【解决方案2】:

当您在scanf 中使用%s 时,它会在第一个空格处截断输入。见here

任意数量的非空白字符,在第一个停止 找到空白字符。终止空字符是 自动添加到存储序列的末尾。

你可以根据this source使用这个:

scanf("%[^\n]s", intpu);

您也可以使用gets() 作为替代。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多