回答
strncmp是你可以用它来做到这一点的功能。
我猜他问了这个问题是正确的答案,所以+ 1 XD – slezica 2011-02-28 13:18:22
@santiago strncmp()不会解决问题。 – Algorithmist 2011-02-28 16:39:13
@Algorithmist你必须被告知关于这个问题的更多细节比我更多! – slezica 2011-02-28 21:22:00
从你的文章中,我假设你已经在 '缓冲' 一\ n所以这将失败
strcmp(buffer,"change")
为了比较写,而不是
strncmp(buffer,"change",strlen("change"))
或更好
char keyword[] = "change";
strncmp(buffer,keyword,strlen(keyword)
不会返回不正确的结果,如果缓冲区=“更改”?因为它只会和e比较,直到那时它们才是相同的。 – 2013-01-14 18:42:31
是的,但避免这种情况的唯一方法是用\ 0替换\ n,然后对完整的字符串执行strcmp。 – 2013-01-15 10:40:21
除了建议的strncmp
,您可以在比较前从缓冲区中删除'\n'
...
char buffer[WHATEVER];
if (!fgets(buffer, sizeof buffer, stdin)) /* uh oh */ exit(EXIT_FAILURE);
{ /* validate buffer and remove trailing '\n' */
size_t buflen;
buflen = strlen(buffer);
if (!buflen) /* oh uh */ exit(EXIT_FAILURE);
if (buffer[buflen - 1] != '\n') /* oh uh */ exit(EXIT_FAILURE);
buffer[buflen - 1] = 0;
}
if (strcmp(buffer, "change") == 0) /* "change" found */;
- 1. 字符缓冲区比较
- 2. 在C.缓冲区一个字符串比较反对字符串文字
- 3. 与字符串比较字符串值
- 4. JS比较字符串与换行符
- 5. 字节缓冲区,字符串
- 6. 比较常量字符与字符串
- 7. 比较datetimepicker与字符串
- 8. 与字符串比较
- 9. 比较字符串与document.getElementById()
- 10. 通过字符串与字符串列表进行比较
- 11. 将字符串与数组中的字符串进行比较
- 12. 将字符串网址与字符串值进行比较
- 13. 将字符串与其他字符串进行排序比较
- 14. 将数组字符串与字符串进行比较
- 15. 字符串/字符比较与python中的按位比较
- 16. 与Extjs进行字符串比较
- 17. 将char与字符串进行比较
- 18. 将Arraylist与字符串进行比较
- 19. 与其他字符串进行比较
- 20. 将字符串的字符与字典进行比较python
- 21. 字符串和字符串缓冲区内存概念
- 22. 字符串缓冲区字符串转换异常?
- 23. 字符串连接vs字符串缓冲区在Javascript中
- 24. 预期的字符串或缓冲区
- 25. 字符串缓冲区太小
- 26. Java缓冲区到字符串数组
- 27. 包装纸字符串缓冲区
- 28. 字符串缓冲区需要帮助
- 29. 升压缓冲区麻烦字符串
- 30. ORA-19011:字符串缓冲区太小
没有换行符或没有NUL终止符?因为如果它只是没有换行符,我不会看到问题出在哪里...... – 2011-02-28 11:26:18
您需要提供一些更多信息。字符串是怎样的? – 2011-02-28 11:28:33
你需要指定'buffer'有什么内容。 – 2011-03-01 10:02:38