c - 函数的返回值在 c 中各不相同

标签 c c++11 int64 uint64

我编写了一个程序,从一个文件中获取所有电话号码,该文件包含其他文本,例如 at 命令和来自其他子进程的其他错误。在这里,当我尝试使用用户定义的函数将字符串转换为整数时,我遇到了问题。存储在函数中的转换后的值没有正确返回到主程序,而是返回一些不寻常的值,并且每次执行似乎都是相同的。这让我很惊讶。有人可以给我建议吗?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char lic[128];
unsigned long long sum=0ULL;

unsigned long long stringtoint(char str[])
{
    int i=0;
    sum=0;
    if(str[strlen(str)]!='\0')
        return -1;
        //puts("Im in function");
    while(str[i]!='\0'){
        //printf("- %c -\n",str[i]);
         if(str[i] >= 48 && str[i] <= 57){
             sum = sum*10 + (str[i] - 48);
             //printf("%c and %llu\n",str[i],sum);
         }
         i++;
    }
    if(sum>0)
    printf("\nIn function passed string is %s and integer value is %llu\n",str,sum);
    return sum;
}


FILE *file;     
int main(){
        //long long int inte;
        int64_t inte;        file = fopen("receive","r"); 
        if(file!=NULL)
                while(fscanf(file,"%s",lic)!=EOF){
                        inte = 0;
                        inte=stringtoint(lic);
                        if(inte !=0){
                                printf("In Main %llu is the value of the string %s",inte,lic);
                        if(inte==sum)
                                printf("\n%llu and %llu are same\n",inte,sum);
                }
        }
        printf("\n");
        fclose(file);
        return 0;
}

下面给出了我从该程序中获得的结果。

在函数中传递的字符串是 8939095683,整数值是 8939095683 Main中的349161091是字符串8939095683的值

Shameerariff@shameerariff-Satellite-L450:~/Workinffolder/ivr/IVRReporting$ ./datadecoder

在函数中传递的字符串是 8939095683,整数值是 8939095683 Main中的349161091是字符串8939095683的值

Shameerariff@shameerariff-Satellite-L450:~/Workinffolder/ivr/IVRReporting$ ./datadecoder

在函数中传递的字符串是 8939095683,整数值是 8939095683 Main中的349161091是字符串8939095683的值

需要您的宝贵意见,先感谢您的支持。

最佳答案

第 1 点。您需要更改

int stringtoint(char str[])

unsigned long long stringtoint(char str[])

第 2 点。 %lld 不是 unsigned long long 的正确格式说明符。使用%llu

关于c - 函数的返回值在 c 中各不相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28698573/

相关文章:

javascript - JS从字符串中解析出错误的数字

c++ - 可以优化智能指针吗?

c++ - 使用局部静态 std::once_flag 和局部静态指针对静态变量进行线程安全初始化

c++ - 如何设置 int64 的较低或较高值?

c - 是否可以替换 double 并仅使用 C 中的整数编写程序,并具有相同的输出?

c++ - UB是否可以重用对象的存储而不先破坏它?

swift - 生成巨大随机数时出现 malloc 错误

c - 从字符串常量初始化的不适当类型的数组

arrays - 动态创建一个连续的 5D 数组?

c - mmap ed 区域是 "single object"吗?我可以比较其中的指针吗?