gpt4 book ai didi

c - 查找句子中的字符

转载 作者:行者123 更新时间:2023-11-30 21:00:36 24 4
gpt4 key购买 nike

我想制作一个可以在长字符串中查找字符的程序...。.

int i = 0;
char buf[100];
char ch[10];
char *res;
int len = 0;
int j = 0;

printf("Enter characters: ");
while(1){
j = getchar();
if(j == '\n') break;
ch[i++] = j;
}
ch[i] = '\0';

while(len < 1){
printf("Enter a sentence: ");
res = fgets(buf, 200, stdin);
len = strlen(buf);
}

这是示例执行屏幕。

输入字符:mkn

输入一句话:我儿子正在上小学。

发现..

-我的儿子在

初级

我想用 strtok() 和 strchr() 编写这个程序...但我对指针感到困惑...

最佳答案

尽管它们可能不是此目的的最佳选择,但您可以使用 strtok()strchr() 实现您想要的效果。以下是我如何在已有的基础上构建可行的解决方案:

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define CHARACTERS_MAXIMUM 32
#define BUFFER_MAXIMUM 1024

int main() {
char characters[CHARACTERS_MAXIMUM];
int characters_length = 0, character;

printf("Enter characters: ");

while (characters_length < CHARACTERS_MAXIMUM - 1) {
character = getchar();
if (character == '\n') {
break;
}
characters[characters_length++] = tolower(character);
characters[characters_length++] = toupper(character);
}
characters[characters_length] = '\0';

char buffer[BUFFER_MAXIMUM], *result = NULL;
int buffer_length = 0;

while (buffer_length < 1 || result == NULL) {
printf("Enter a sentence: ");

if ((result = fgets(buffer, BUFFER_MAXIMUM, stdin)) != NULL) {
buffer_length = strlen(buffer);
}
}

char *token = strtok(buffer, " ");

while (token != NULL) {
for (int i = 0; i < characters_length; i++) {
if (strchr(token, characters[i]) != NULL) {
printf("%s ", token);
break;
}
}

token = strtok(NULL, " ");
}

printf("\n");

return 0;
}

请注意,这不是一个完成的程序,您应该进行更多/更好的错误检查以及其他调整才能正确完成它。

使用示例

> ./a.out
Enter characters: mkn
Enter a sentence: My son is in elementary school.
My son in elementary
>

虽然上面是 strtok() 的正确用法,但要小心。它是较早时代的产物,应该避免使用更安全的现代库函数,例如 strsep()strtok_r()

关于c - 查找句子中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40253622/

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