gpt4 book ai didi

c - 如何在系统调用中比较两个字符串

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:46 26 4
gpt4 key购买 nike

    #define O_WRONLY    01
#define O_APPEND 02000

int main(void)
{
// fd is an indentifier for the file that we are going to work with
int fd;
// We open the file with the write or append mode, so you will
// have to create the file testfile.txt in the current directory.
fd = open("jobby.txt", O_WRONLY|O_APPEND, 0);


if(fd < 0)
return 2;
char str[10]= "";
char buf1[] = "Please type username and hit Enter: ";
write(1, buf1, sizeof(buf1));
read (0, str, 10);
write(fd,str, sizeof(str));

char str1[10]= "";
char buf2[] = "Please type in a password and hit Enter: ";
write(1, buf2, sizeof(buf2));
read (0, str1, 10);
write(fd,str1, sizeof(str));

char str2[10]= "";
char buf4[] = "Please re-enter password and hit Enter: ";
write(1, buf4, sizeof(buf4));
read (0, str2, 10);
write(fd,str2, sizeof(str));

if(sizeof(str1)==sizeof(str2))
{
char buf5[] = "\n password match: ";
write(1, buf5, sizeof(buf5));
}
else
{
char buf6[] = "\n password mismatch: ";
write(1, buf6, sizeof(buf6));
}

我写了一个系统调用程序。我必须比较两个密码,但这段代码不起作用。我如何比较两个字符串?这个比较函数不起作用。否则代码是完美的。

最佳答案

if(sizeof(str1)==sizeof(str2))

您可以使用函数 strcmp() 而不是比较缓冲区的大小-

if(strcmp(str1,str2)==0){
//your code
}

头文件 - string.h

如果两个字符串相等,此函数返回 0

编辑

但您需要在字符串末尾添加 '\0',因为 read() 不会追加它。

将数组的大小增加到 11。在字符数组 str1str2 的末尾添加 '\0'

关于c - 如何在系统调用中比较两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31691420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com