Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中如何将字符数组的一部分转换为整数变量_C_Arrays_Input_Char - Fatal编程技术网

在C语言中如何将字符数组的一部分转换为整数变量

在C语言中如何将字符数组的一部分转换为整数变量,c,arrays,input,char,C,Arrays,Input,Char,我有一个任务,我应该以以下形式接受用户的输入: double, char('C' for Celsius or 'F' for Fahrenheit) 并将其转换为另一个温度标度。为了完成这项任务,我编写了以下程序: 节目 /* 这些程序的目的是转换用户的输入,并在tempurate转换程序中使用它。 帕拉莫特·辛格 伪代码: 导入所有需要的文件 请求用户的输入。 将用户输入转换为两个变量:一个双精度变量和一个字符 如果字符为“c”,则将双精度转换为farinhiet 如果字符为“c”,则将双

我有一个任务,我应该以以下形式接受用户的输入:

double, char('C' for Celsius or 'F' for Fahrenheit)
并将其转换为另一个温度标度。为了完成这项任务,我编写了以下程序:

节目
/*
这些程序的目的是转换用户的输入,并在tempurate转换程序中使用它。
帕拉莫特·辛格
伪代码:
导入所有需要的文件
请求用户的输入。
将用户输入转换为两个变量:一个双精度变量和一个字符
如果字符为“c”,则将双精度转换为farinhiet
如果字符为“c”,则将双精度转换为celius
显示结果。
*/
#包括
int main()
{
字符输入[7];
printf(“欢迎使用Tempurate转换,输入一个后跟C或F的数字,具体取决于您是将Celuis Temp转换为Farinheit还是将Celuis Temp转换为Farinheit。”);
fgets(输入,7,标准输入);
/*如果(in='C'| in='C')输入输出代码
{
int f=9/5(int+32);
printf(“输入”,in,“输出:”f,“f”);
}
else(inint='F'| | inint='F')
{
INTC=5/9(inint-32);
printf(“输入”,in,“输出:”c,“c”);
}
其他的
{
printf(“我告诉过你输入c或f。重新启动程序。”);
} */
/*测试输入的内容*/
printf(输入);
返回0;
}
我的问题是如何将字符数组的一部分转换为double

用以下内容扫描您的输入:


编辑:
inint
是一个有点误导的名字。你应该读双人本的,对吗

根据printf语句:

printf("Welcome to the Tempurate Conversion Enter a number followed by C or F, depending on if you what to convert a Celuis Temp to Farinheit or vice versa.");
看起来您希望用户输入(例如):23.5c

这意味着:
scanf(“%lf%c”、&inDouble、&inChar)语句,不带中间逗号。`注意变量名的更改

另外,
tolower(inChar)
将简化一些if逻辑


希望这能有所帮助。

为什么不干脆
scanf(“%lf,%c”、&inint、&in)?输入应该是什么格式?我假设,例如,“30F”,但你没有说。到目前为止,所有的建议都假设输入有一个逗号。@P0W,因为人们不应该使用
scanf()
。没有理由或替代方案的“不要使用scanf”这样的笼统语句不是很有用。+1但是你忘了提到应该使用
fgets()
strtod()
,而不是
scanf()
。另外,如果我们扫描的是双精度的,为什么不编辑变量名呢。当按照指示使用时,
scanf()
没有什么问题。@H2CO3我想每个人都有自己的看法,但它肯定不是不推荐的,编写控制台i/o的新程序员总是会使用它。所以,我们不妨教他们如何正确使用它。我从来没有说过它不受欢迎@H2CO3:考虑到
scanf
是为字段分隔数据设计的(使用
fgets
行),第一个并不特别令人惊讶
%s
缓冲区溢出绝对是一个太容易造成的问题,所以我接受。
sscanf(input, "%lf, %c", &inint, &in);
printf("Welcome to the Tempurate Conversion Enter a number followed by C or F, depending on if you what to convert a Celuis Temp to Farinheit or vice versa.");