Tag: strncmp

将单个字符串与C中的字符串数组进行比较

我的程序正在接受用户输入,然后输入输入的第一个单词并将其与接受的命令数组进行比较。 将输入的第一个单词(在被标记化之后)与字符串数组进行比较的最佳方法是什么? 例: 将字符串”pwd”与包含{“wait”, “pwd”, “cd”, “exit”}的数组进行比较 在此先感谢您的帮助!

为什么fgets()和strncmp()在这个C代码中无法进行字符串比较?

这是我遇到的一个非常有趣的问题。 我做了很多关于堆栈溢出的搜索,发现其他人有类似的问题。 所以我相应地写了我的代码。 我最初有fscan()和strcmp() ,但这完全轰炸了我。 所以其他post建议使用fgets()和strncmp()并使用长度来比较它们。 我试着通过打印出两个字符串的大小来调试我正在做的事情。 我想,也许他们有/n或漂浮在那里或其他东西搞乱了(另一篇文章谈到了这一点,但我认为这不会发生在这里)。 因此,如果大小相同,则strncmp()的限制应该相同。 对? 只是为了确保他们被认为是正确的比较。 现在,我知道如果字符串相同,则返回0否则使用strncmp()返回负数。 但它不起作用。 这是我得到的输出: perk repk Enter your guess: perk Word size: 8 and Guess size: 8 Your guess is wrong Enter your guess: 这是我的代码: void guess(char *word, char *jumbleWord) { size_t wordLen = strlen(word); size_t guessLen; printf(“word is: %s\n”,word); printf(“jumble is: %s\n”, jumbleWord); char […]

为什么即使使用volatile关键字,编译器也会因strncmp()而优化掉共享内存读取?

这是一个程序foo.c ,它将数据写入共享内存。 #include #include #include #include #include #include #include #include int main() { key_t key; int shmid; char *mem; if ((key = ftok(“ftok”, 0)) == -1) { perror(“ftok”); return 1; } if ((shmid = shmget(key, 100, 0600 | IPC_CREAT)) == -1) { perror(“shmget”); return 1; } printf(“key: 0x%x; shmid: %d\n”, key, shmid); if ((mem = […]