コマンドのような他のテキストや他の子プロセスからの他のエラーを含むファイルからすべての電話番号を取得するプログラムを作成しました。ここで、ユーザー定義関数を使用して文字列を整数に変換しようとすると、問題に直面します。関数に格納された変換された値は、メイン プログラムに適切に返されません。代わりに、異常な値が返され、すべての実行で同じように見えます。それは私を驚かせます。誰かが私にアドバイスできますか。
#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 です メインでは 349161091 は文字列 8939095683 の値です
Shameerariff@shameerariff-Satellite-L450:~/Workinffolder/ivr/IVRReporting$ ./datadecoder
関数で渡された文字列は 8939095683 で、整数値は 8939095683 です メインでは 349161091 は文字列 8939095683 の値です
Shameerariff@shameerariff-Satellite-L450:~/Workinffolder/ivr/IVRReporting$ ./datadecoder
関数で渡された文字列は 8939095683 で、整数値は 8939095683 です メインでは 349161091 は文字列 8939095683 の値です
貴重なご意見をお待ちしております。よろしくお願いいたします。