【发布时间】:2021-01-25 10:09:05
【问题描述】:
在将数组值与整数进行比较时出现错误。但谁能告诉我如何将数组的值存储在单独的变量中。
让我们假设array[0] 有123 和array[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收到的字符串的指针。你希望从那里得到什么整数值?如果要分配存储在该字符串中的数值,则必须先对其进行转换。为此,您可以查看scanf或strtod的手册。 -
好的会检查