linux下strcmp函数,Linux登录和strcmp

Dominik Brzeziński

1

c

linux

compare

strcmp

我正在为Linux编写一个简单的程序.我有一个功能"addonlyonce"的问题.它比较字符串并添加到没有重复的数组(如果字符串不存在于数组中).该函数运行良好,但不适用于utmp结构.当比较utmp结构的每个字符串总是返回1(这意味着字符串已经存在于数组中 - 并且它是错误的:().您可以编译此代码gcc thiscode.c -o test(它仅适用于Linux).

#include

#include

#include

#include

int addonlyonce(char **array, char *str) {

int i=0;

printf("I got %s\n",str);

while(*array != '\0') {

if(strcmp(*array,str)==0) {

printf("Already exists!\n");

return 1;

}

i++;

array++;

}

*array=str;

printf("Sit down on the number: %d\n",i);

return 0;

}

void printarray(char **array) {

printf("Array looks like: ");

while(*array != '\0') {

printf("%s ",*array);

array++;

}

printf("\n");

}

int main(void) {

char *users[20]={0};

char exuser2[]="exuser2";

struct utmp current_record;

FILE *fp = fopen(UTMP_FILE, "r");

addonlyonce(users,"exuser1");

printarray(users);

addonlyonce(users,exuser2);

printarray(users);

addonlyonce(users,"exuser1");

printarray(users);

addonlyonce(users,"exuser3");

printarray(users);

while (fread(&current_record, sizeof(struct utmp), 1, fp) == 1) {

addonlyonce(users,current_record.ut_name); //HERE DON'T WORK

printarray(users);

}

addonlyonce(users,"exuser4");

printarray(users);

fclose(fp);

return 0;

}

我想这样做(正确运作):

I got exuser1

Sit down on the number: 0

Array looks like: exuser1

I got exuser2

Sit down on the number: 1

Array looks like: exuser1 exuser2

I got exuser1

Already exists!

Array looks like: exuser1 exuser2

I got exuser3

Sit down on the number: 2

Array looks like: exuser1 exuser2 exuser3

I got reboot

Sit down on the number: 3

Array looks like: exuser1 exuser2 exuser3 reboot

I got kelloco2

Sit down on the number: 4

Array looks like: exuser1 exuser2 exuser3 reboot kelloco2

I got przemek

Sit down on the number: 5

Array looks like: exuser1 exuser2 exuser3 reboot kelloco2 przemek

I got guest

Sit down on the number: 6

Array looks like: exuser1 exuser2 exuser3 reboot kelloco2 przemek guest

I got exuser4

Sit down on the number: 7

Array looks like: exuser1 exuser2 exuser3 reboot kelloco2 przemek guest exuser4

但是,执行后我得到这样的东西:

I got exuser1

Sit down on the number: 0

Array looks like: exuser1

I got exuser2

Sit down on the number: 1

Array looks like: exuser1 exuser2

I got exuser1

Already exists!

Array looks like: exuser1 exuser2

I got exuser3

Sit down on the number: 2

Array looks like: exuser1 exuser2 exuser3

I got reboot

Sit down on the number: 3

Array looks like: exuser1 exuser2 exuser3 reboot

I got kelloco2

Already exists! //Here a problem arises

Array looks like: exuser1 exuser2 exuser3 kelloco2

I got przemek

Already exists!

Array looks like: exuser1 exuser2 exuser3 przemek

I got guest

Already exists!

Array looks like: exuser1 exuser2 exuser3 guest

I got exuser4

Sit down on the number: 4

Array looks like: exuser1 exuser2 exuser3 guest exuser4

.

4xDvl.jpg

可能有什么不对?问候K.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值