为什么这样比较会出问题
想用strcmp对long int 型进行比较,却出了问题奇怪的是,却不是全部出了问题~~~数据111111111却没有提示输入重复,不知道具体原因……求解~~~
程序代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> #define LEN sizeof(Node) typedef struct Node { long int num; struct Node *next; struct Node *back; }Node; Node *head=NULL; int n=0; void insert(Node *p1,Node *p2) { if (p1==head) { p2->next=head; p2->back=NULL; head->back=p2; head=p2; return; } p2->back=p1->back; p1->back->next=p2; p2->next=p1; p1->back=p2; return; } void fun(long int a) { Node *p=head; Node *p2=NULL; if (head==NULL) { p=head=(Node *)malloc(LEN); head->next=NULL; head->back=NULL; head->num=a; n++; return ; } while (p->num>a&&p->next) p=p->next; if (strcmp(&(char)p->num,&(char)a)==0)//为什么这样比较会出问题???~~~ return ;//然而,改用if (p->num==a)就没事了~~~ n++; p2=(Node *)malloc(LEN); p2->num=a; if (p->num>a) { p->next=p2; p2->back=p; p2->next=NULL; return ; } insert(p,p2); } void print() { Node *p=head; printf("不同的数:\n"); while (p) { printf("%ld\n",p->num); p=p->next; } } int main() { long int a[]={11111111,22222222,33333333,33333333,44444444,11111111,22222222}; long int *p=a; for (;p-a<sizeof(a)/sizeof(long int);++p) fun(*p); print(); printf("共有%d个不重复的数字\n",n); return 0; }
[此贴子已经被作者于2017-1-6 12:08编辑过]