首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象-c字符串,字符串-格式化程序

对象-c字符串,字符串-格式化程序
EN

Stack Overflow用户
提问于 2010-08-11 00:54:14
回答 1查看 757关注 0票数 0

我有一个梦想松驰和我一起工作的程序,它使用目标C来转换华氏、摄氏、开尔文和兰肯温标之间的温度,但是把控制台-输入转换成开尔文,然后从开尔文转换到最终用户想要的温度刻度。

现在,我有一个想法,我想实现的最后提示符转换后的温度,一旦计算完成。它当前设置为只显示如下:

temperature-scale x x

其中x=最终转换的温度,而温标=用户希望将其温度转换为。

假设最终用户选择Fahrenheit作为他/她的源温度,希望将212度转换为他/她的目标摄氏度。转换明显应该等于摄氏100度,但我认为这个程式会更好地显示结果如下:

212华氏度( Fahrenheit )是摄氏100华氏度( 100 )。

现在,我用粗体表示需要用变量替换的值。我有很容易解决的212和100个值,因为首先有100个变量,而212可以很容易地用sourceTemp变量的字符串格式化程序替换它,该变量包含用户原始输入的温度。

现在,华氏字符串有点不同。

我试图在原来的开关中建立一些新的东西,例如:

代码语言:javascript
复制
switch (prompt) 
{
    case 1:
        //end-user chooses Fahrenheit
        [converter setFahrenheitValue:sourceTemp];
        sourceTempText = 1;
        break;

    case 2:
        //end-user chooses Celsius
        [converter setCelsiusValue:sourceTemp];
        sourceTempText = 2;
        break;

    case 3:
        //end-user chooses Kelvin
        [converter setKelvinValue:sourceTemp];
        sourceTempText = 3;
        break;

    case 4:
        //end-user chooses Rankine
        [converter setRankineValue:sourceTemp];
        sourceTempText = 4;
        break;
}

好的,所以我添加到每个不同的情况,设置一个名为sourceTempText的新变量为1-4,与最终用户选择选择他/她的源温度值相同。

下面是我尝试用最后的开关向最终用户显示最后提示符的方法:

代码语言:javascript
复制
switch (prompt2) 
{
    case 1:
        //end-user chooses Fahrenheit
        printf("%lf degrees sourceTempText is %lf degrees Fahrenheit\n", sourceTemp, [converter fahrenheitValue]);
        break;

    case 2:
        //end-user chooses Celsius
        printf("%lf degrees sourceTempText is %lf degrees Celsius\n", sourceTemp, [converter celsiusValue]);
        break;

    case 3:
        //end-user chooses Kelvin
        printf("%lf degrees sourceTempText is %lf degrees Kelvin\n", sourceTemp, [converter kelvinValue]);
        break;

    case 4:
        //end-user chooses Rankine
        printf("%lf degrees sourceTempText is %lf degrees Rankine\n", sourceTemp, [converter rankineValue]);
        break;
}

我现在不确定是否可以像这里一样将sourceTempText插入到字符串中,相反,也许我必须使用字符串格式化程序,但我不确定。这应该是一个简单的解决办法,我只是想把它扔到这里!:)

对不起,这种混乱的问题格式,我有点不知道怎么说,所以请澄清,如果需要。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-11 01:00:09

用%s替换sourceTempText,在switch语句上面声明可能的字符串如下:

代码语言:javascript
复制
char *scales[4] = { "Fahrenheit", "Celsius", "Kelvin", "Rankine" };

然后向每个printf添加和参数,在sourceTemp,之后,如下所示:

代码语言:javascript
复制
printf("%lf degrees %s is %lf degrees Fahrenheit\n",
                   sourceTemp, scales[prompt-1], [converter fahrenheitValue]);

这是prompt-1,因为计数从零开始,从1开始。

ps. --我看到你现在设置了sourceTempText = 1/2/3/4; --我只是使用了prompt,因为它具有相同的值。你能做的就是

代码语言:javascript
复制
char *scales[5] = { "Error!", "Fahrenheit", "Celsius", "Kelvin", "Rankine" };

并使用scales[sourceTempText],同时确保在switch之前,sourceTempText = 0。这将成为输入消毒的一个很好的例子:无论用户设法在prompt中放什么,您的程序总是会显示一个有效的文本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3454571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档