【问题标题】:Cant compare array value with an integer无法将数组值与整数进行比较
【发布时间】:2021-01-25 10:09:05
【问题描述】:

在将数组值与整数进行比较时出现错误。但谁能告诉我如何将数组的值存储在单独的变量中。 让我们假设array[0]123array[1]jn12jn3jk2=我想将 123 存储在变量 keysum 中,并将 jn12jn3jk2= 存储在变量哈希中

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<ctype.h>
  4
  5
  6 int main(){
  7     int i=0,number=0,digit;
  8     char crypt[10000],c;
  9     char *array[2];
 10     printf("Enter Crypted Text> ");
 11     fgets(crypt,10000,stdin);
 12     char * token = strtok(crypt, "'");
 13     while( token != NULL ) {
 14         array[i++]=token;
 15         token = strtok(NULL, "'");
 16     }
 17     int keysum = array[0];
 18     int k=0;
 19     printf("Enter Key> ");
 20     scanf("%d",&k);
 21     printf("KEY= %d\n",k);
 22
 23
 24 //extracting key digits
 25     int kerray[6];
 26     int key=5;
 27     int digit1=0;
 28     int digit2=0;
 29     int digitin=0;
 30     int digitout=0;
 31     for (i = 3; i >= 0; i--)
 32     {
 33     kerray[i] = k % 10;
 34     k /= 10;
 35     }
 36     digit1=kerray[0];
 37     digit2=kerray[1];
 38     digitin=kerray[2];
 39     digitout=kerray[3];
 40
 41 //4key ofc
 42     int ofc=0;
 43     ofc=(digit1+digitout)*(digit2+digitin);
 44
 45
 46 //key check
 47     if( ofc == array[0])
 48     {
 49         printf("keymatch");
 50     }
 51     else
 52     {
 53         printf("no match");
 54     }
 55
 56     return 0;
 57 }

错误:

decode.c: In function 'main':
decode.c:17:18: warning: initialization of 'int' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
   17 |     int keysum = array[0];
      |                  ^~~~~
decode.c:47:13: warning: comparison between pointer and integer
   47 |     if( ofc == array[0])

【问题讨论】:

  • 当您声明char *array[2]; 时,您希望array 具有什么类型?
  • array[0] 包含一个指向您从strtok 收到的字符串的指针。你希望从那里得到什么整数值?如果要分配存储在该字符串中的数值,则必须先对其进行转换。为此,您可以查看scanfstrtod 的手册。
  • 好的会检查

标签: arrays c pointers integer


【解决方案1】:

测试以下代码:

#include<stdio.h>
#include<string.h>
#include<ctype.h>

int main()
{
    int i = 0, number = 0, digit;
    char crypt[10000], c;
    char *array[2];
    printf("Enter Crypted Text> ");
    fgets(crypt, 10000, stdin);
    char *token = strtok(crypt, "'");
    while (token != NULL)
    {
        array[i++] = token;
        token = strtok(NULL, "'");
    }
    int keysum = (int) array[0];
    int k = 0;
    printf("Enter Key> ");
    scanf("%d", &k);
    printf("KEY= %d\n", k);
    //extracting key digits
    int kerray[6];
    int key = 5;
    int digit1 = 0;
    int digit2 = 0;
    int digitin = 0;
    int digitout = 0;
    for (i = 3; i >= 0; i--)
    {
        kerray[i] = k % 10;
        k /= 10;
    }
    digit1 = kerray[0];
    digit2 = kerray[1];
    digitin = kerray[2];
    digitout = kerray[3];
    //4key ofc
    int ofc = 0;
    ofc = (digit1 + digitout) * (digit2 + digitin);
    //key check
    if ((char *) ofc == array[0]) {
        printf("keymatch");
    } else {
        printf("no match");
    }
    return 0;
}

【讨论】:

  • 我收到了这个错误:decode.c: In function 'main': decode.c:46:8: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] 46 | if((char *) ofc == array[0])
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 2013-06-04
  • 1970-01-01
相关资源
最近更新 更多