我有一个char []包含一个值,如"0x1800785",但我想要赋值的函数需要一个int,我怎么能把它转换成一个int?我搜索过但找不到答案.谢谢.
下面的程序将字符串转换为long,但根据我的理解,它也会返回错误.我依赖的事实是,如果strtol将字符串成功转换为long,那么第二个参数strtol应该等于NULL.当我用55运行以下应用程序时,我收到以下消息.
./convertToLong 55
Could not convert 55 to long and leftover string is: 55 as long is 55
Run Code Online (Sandbox Code Playgroud)
如何成功检测strtol的错误?在我的应用程序中,零是有效值.
码:
#include <stdio.h>
#include <stdlib.h>
static long parseLong(const char * str);
int main(int argc, char ** argv)
{
printf("%s as long is %ld\n", argv[1], parseLong(argv[1]));
return 0;
}
static long parseLong(const char * str)
{
long _val = 0;
char * temp;
_val = strtol(str, &temp, 0);
if(temp != '\0')
printf("Could not convert %s to long and …Run Code Online (Sandbox Code Playgroud) 我有一个string它可以是一个double,float或int。我想string通过进行函数调用将转换为数据类型。我目前正在使用诸如stof和等函数,stoi当输入不是a float或时会抛出异常int。还有另一种无需捕获异常即可转换字符串的方法吗?也许某些函数将a指针传递给floatas参数,然后仅返回a boolean,表示调用函数成功。我想避免try catch在我的任何代码中使用任何语句。
我无法修复代码中的奇怪错误。
我编写了一个程序来打印最初以“MM/DD/YYYY”格式编写的日期,以格式化“Month DD, YYYY”。
该程序很简单:我将日期存储在数组中char,然后strtok分别获取月、日、年并将指向它们的指针存储在数组中char *。最终将代表月份的字符串部分转换为int ,从而将其作为打印月份的索引;日和年分别打印。
该程序可以工作,但我真的无法理解这样一个事实:如果我输入 08(八月)或 09(九月)作为月份,它就不会工作。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void read_date( char * const);
void collect_data( char * const, char *[] );
int convert_month( char * );
int main() {
char *months[12] = {"January", "February", "March", "April", "May", "June", "July","August", "September", "October", "November", "December" };
char orig_date[11];
char *date_elem[3];
int month;
read_date( orig_date );
collect_data( orig_date, date_elem );
month = convert_month( date_elem[0] );
puts("\n*New format*\n");
printf( …Run Code Online (Sandbox Code Playgroud) 我在创建多线程程序时遇到了一些错误.使用gdb进行调试时,atoi函数会抛出错误.请帮助,atoi多线程不安全,如果是,有哪些替代方案?