用c语言匹配不都是空格的字符串
时间: 2023-12-11 21:05:23 浏览: 38
不是的,C 语言中的正则表达式可以用于匹配任意字符串,包括空格字符串。下面是一个简单的例子,演示如何使用 C 语言中的正则表达式匹配一个不包含空格的字符串:
```c
#include <stdio.h>
#include <regex.h>
int main() {
regex_t regex;
int ret;
char *str = "hello";
char *pattern = "[a-zA-Z]+";
ret = regcomp(®ex, pattern, REG_EXTENDED);
if (ret != 0) {
printf("regcomp error\n");
return 1;
}
ret = regexec(®ex, str, 0, NULL, 0);
if (ret == 0) {
printf("match success\n");
} else {
printf("match failed\n");
}
regfree(®ex);
return 0;
}
```
上述代码中,使用 `regcomp` 函数编译正则表达式,然后使用 `regexec` 函数执行匹配操作。在这个例子中,正则表达式 `[a-zA-Z]+` 表示匹配一个或多个字母。如果字符串 `str` 中包含一个或多个字母,那么匹配成功,否则匹配失败。
相关问题
使用C语言输入一个无空格字符串和一个长度为2的子串,求该子串在该字符串中出现的次数,如果查找子串是相同的2个字符,那么记过次数的字母不再计入。
好的,我明白了你的问题。下面是使用C语言解决该问题的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char substr[3];
int count = 0;
int len;
printf("请输入字符串:");
scanf("%s", str);
printf("请输入子串:");
scanf("%s", substr);
len = strlen(substr);
for (int i = 0; i < strlen(str) - len + 1; i++) {
int flag = 0;
for (int j = 0; j < len; j++) {
if (str[i+j] != substr[j]) {
flag = 1;
break;
}
}
if (flag == 0) {
count++;
for (int j = i; j < i+len; j++) {
if (substr[0] != substr[1] || str[j] != substr[0]) {
str[j] = '*'; // 标记已匹配过的字母
}
}
}
}
printf("子串在字符串中出现的次数为:%d\n", count);
return 0;
}
```
该程序首先输入一个字符串和一个子串,然后遍历整个字符串,查找子串出现的次数。在匹配子串时,如果子串中的两个字符相同,则只计算第一次匹配时的出现次数。为了避免重复计数,程序使用了一个标记为已匹配过的字母。
用c语言统计某个字符在目标字符串中出现的次数 输入
可以按照以下代码实现:
```c
#include <stdio.h>
#include <string.h>
int count_char(char *str, char c)
{
int count = 0;
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (str[i] == c) {
count++;
}
}
return count;
}
int main()
{
char str[100];
char c;
int count;
printf("Please enter a string: ");
fgets(str, sizeof(str), stdin);
printf("Please enter a character: ");
scanf("%c", &c);
count = count_char(str, c);
printf("The character '%c' appears %d times in the string.\n", c, count);
return 0;
}
```
输入一个字符串和一个字符,然后调用 `count_char` 函数进行统计。该函数遍历字符串中每个字符,如果字符与目标字符匹配,则计数器加 1。最后返回计数器的值。
注意,如果要输入含有空格的字符串,需要使用 `fgets` 函数。而在输入字符时,可以使用 `scanf` 函数,但要注意输入后需要清除缓存区中的 `\n` 符号。