相关疑难解决方法(0)

将char数组转换为C中的int数

我想转换一个char数组[],如:

char myarray[4] = {'-','1','2','3'}; //where the - means it is negative
Run Code Online (Sandbox Code Playgroud)

所以它应该是整数:-1234使用C中的标准库.我找不到任何优雅的方式来做到这一点.

我可以肯定附加'\ 0'.

c arrays int char

30
推荐指数
2
解决办法
21万
查看次数

std :: string operations(即stol,stoi)未找到NDK8d

我尝试使用支持c ++ 11的ndk r8d设置我的第一个android项目.一些c + 11机制工作正常(即lambada表达式),但是当我尝试使用其中一个新的字符串操作时,编译失败(错误:'stol'不是'std'的成员).这是我的项目设置:

Application.mk

APP_MODULES := MyLib   

APP_CPPFLAGS := -std=gnu++0x  
APP_CPPFLAGS += -frtti
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -DDEBUG   

APP_ABI := armeabi-v7a
APP_PLATFORM:=android-14                      

APP_STL := gnustl_static
APP_GNUSTL_CPP_FEATURES := rtti exceptions

NDK_TOOLCHAIN_VERSION=4.7
Run Code Online (Sandbox Code Playgroud)

这些功能实际上不起作用吗?

android android-ndk

9
推荐指数
1
解决办法
3570
查看次数

为什么我不应该使用atoi()?

有人告诉我,我不应该使用atoi(),而且我应该总是使用strtol().这有什么错atoi(),我不应该使用它?是strtol()真的,而不是用正确的事情?(那么strtol()返回a 的事实呢long,不是int那样的atoi()吗?)

c

8
推荐指数
3
解决办法
4049
查看次数

为什么你不能检查errno是否等于ERANGE?

我一直在尝试将char数组正确转换为long strtol,检查是否存在溢出或下溢,然后对long进行int转换.一路上,我注意到很多代码看起来像这样

if ((result == LONG_MAX || result == LONG_MIN) && errno == ERANGE)
{
   // Handle the error
}
Run Code Online (Sandbox Code Playgroud)

为什么你不能只说

if(errno == ERANGE)
{
    // Handle the error
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,如果发生下溢或溢出,则在两种情况下都将errno设置为ERANGE.前者真的有必要吗?可以单独检查ERANGE是否有问题?

这就是我的代码现在的样子

 char *endPtr;
 errno = 0;
 long result = strtol(str, &endPtr, 10);

 if(errno == ERANGE)
 {
     // Handle Error
 }
 else if(result > INT_MAX || result < INT_MIN)
 {
    // Handle Error
 }
 else if(endPtr == str || *endPtr != '\0')
 {
     // Handle Error
 }

 num = …
Run Code Online (Sandbox Code Playgroud)

c errno strtol

7
推荐指数
1
解决办法
967
查看次数

c中“atoi”和“strtol”之间的用法差异

我已经使用atoi一年了,最近几天我遇到一个问题,该表达式:

atoi("20")给出一个值0作为输出。

当我用谷歌搜索这个问题时,我发现它已被弃用,strtol应该改用。

我发现有趣的一点是atoi内部使用strtol。那么,当我将其更改为 时,问题如何解决strtol

c

6
推荐指数
1
解决办法
1万
查看次数

我对fgets()和strtok()的用法对解析多行输入是否正确?

我正在写一个Moore Voting算法的实现,用于在数组中查找多数元素(即出现size/2多次的元素)。如果存在,代码应返回多数元素,否则应返回-1。现在,majorityElement(int size, int arr[])如果我直接在main()函数中对整数数组进行硬编码并从那里调用它,我的版本似乎可以很好地工作。

int majorityElement(int size, int arr[])
{
    int majorityindex = 0;
    int votes = 1;
    int index;
    for (index = 1; index < size; index++)
    {
        if (arr[index] == arr[majorityindex])
            votes++;
        else 
            votes--;
        if (votes == 0)
        {
            majorityindex = index;
            votes = 1;
        }
    }
    int count = 0;
    int i;
    for (i = 0; i < size; i++)
    {
        if(arr[majorityindex] == arr[i])
        count++;
    }
    if (count …
Run Code Online (Sandbox Code Playgroud)

c scanf fgets tokenize strtok

5
推荐指数
1
解决办法
97
查看次数

字符串到整数

我不能用C++做到这一点

string temp = "123";
int t = atoi(temp);
Run Code Online (Sandbox Code Playgroud)

为什么????

c++ string

2
推荐指数
2
解决办法
826
查看次数

标签 统计

c ×5

android ×1

android-ndk ×1

arrays ×1

c++ ×1

char ×1

errno ×1

fgets ×1

int ×1

scanf ×1

string ×1

strtok ×1

strtol ×1

tokenize ×1