[英]Using strstr to determine if a given string contains a string with spaces [C]
我正在研究一個使用strstr()
函數的示例。
如果輸入“ Pamela Sue Smith”,為什么程序輸出“” Pamela“是子字符串!” 而不是““ Pamela Sue Smith”是子字符串!“。
#include <stdio.h>
#include <string.h>
void main(void)
{
char str[72];
char target[] = "Pamela Sue Smith";
printf("Enter your string: ");
scanf("%s", str);
if (strstr( target, str) != NULL )
printf(" %s is a sub-string!\n", str);
}
在scanf
的手冊頁中:
“ s”-匹配一系列非空格字符; 下一個指針必須是指向字符數組的指針,該指針必須足夠長以容納輸入序列和終止的空字節('\\ 0'),該字符會自動添加。 輸入字符串停在空白處或最大字段寬度處,以先到者為准。
因此,“蘇·史密斯”這一部分從來沒有達到str
。 您可以使用fgets
來一次讀取整行:
if (fgets(str, sizeof str, stdin) == NULL) {
printf("End of file\n");
return;
}
請注意,在這種情況下, str
包含終止行尾字符。 你可以做
if (*str != '\0')
str[strlen(str) - 1] = '\0';
刪除它。 (此外,正如其他人已經指出的那樣,對strstr
的“干草堆”爭論首先出現。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.