devc++ strstr
时间: 2024-05-22 17:08:19 浏览: 172
Dev-C++是一个C/C++的集成开发环境(IDE),它集成了MinGW编译器。strstr是一个C库函数,用于在字符串中查找子串。具体来说,它的功能是在字符串haystack中查找子串needle的第一次出现位置,并返回这个位置的指针。如果没有找到,则返回NULL。strstr的声明如下:
```C
char *strstr(const char *haystack, const char *needle);
```
其中,haystack表示要查找的字符串,needle表示要查找的子串。
示例代码:
```C
#include <stdio.h>
#include <string.h>
int main()
{
char str1[20] = "Hello, world!";
char str2[10] = "world";
char *pos = strstr(str1, str2);
if (pos != NULL) {
printf("'%s' is found at position %d in '%s'\n", str2, pos - str1, str1);
} else {
printf("'%s' is not found in '%s'\n", str2, str1);
}
return 0;
}
```
输出结果为:'world' is found at position 7 in 'Hello, world!'。
相关问题
使用Devc++编写以下代码一、 实验目的 C语言编译时需要进行预处理,其中一项是去掉注释。 二、 实验要求 注释有两种,本实验去掉其中一种:/* */。
好的,请看以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 1000
int main()
{
FILE *fp_in, *fp_out;
char input_file[MAX_LEN], output_file[MAX_LEN], line[MAX_LEN], *pos;
int len, i;
printf("请输入需要去除注释的C语言程序文件名:");
scanf("%s", input_file);
printf("请输入去除注释后的输出文件名:");
scanf("%s", output_file);
fp_in = fopen(input_file, "r");
if (fp_in == NULL) {
printf("无法打开文件 %s!\n", input_file);
return 1;
}
fp_out = fopen(output_file, "w");
if (fp_out == NULL) {
printf("无法打开文件 %s!\n", output_file);
return 1;
}
while (fgets(line, MAX_LEN, fp_in) != NULL) {
pos = strstr(line, "/*");
if (pos != NULL) {
*pos = '\0'; // 将/*前面的内容单独输出
fputs(line, fp_out);
do {
fgets(line, MAX_LEN, fp_in);
pos = strstr(line, "*/");
} while (pos == NULL);
pos += 2; // 将*/后面的内容继续扫描
} else {
pos = line;
}
while ((pos = strchr(pos, '/')) != NULL) {
if (*(pos + 1) == '/') {
*pos = '\0'; // 将//前面的内容单独输出
break;
} else {
pos += 1;
}
}
len = strlen(line);
for (i = 0; i < len; i++) {
if (line[i] != '\r' && line[i] != '\n') {
fputc(line[i], fp_out);
}
}
fputc('\n', fp_out);
}
fclose(fp_in);
fclose(fp_out);
printf("注释已经成功去除!\n");
return 0;
}
```
这段代码实现了去除C语言程序中/* */类型注释的功能,具体实现方法是扫描每一行代码,找到/*,则将/*前面的内容单独输出,然后一直读取输入文件内容,直到找到*/为止,将*/后面的内容继续扫描。另外,还需要处理//类型的注释,这种注释只需要将//前面的内容单独输出即可。
使用【DevC++】写【从键盘读入一行含有单词"one"的字符串,并保存到本地字符数组中。编写程序,计 算字符串的长度,并统计单词"one"出现的次数。 要求,尽量多的使用string.h中提供的字符串处理函数。】的代码
在Dev-C++中,你可以使用`string.h`库中的`strlen`函数计算字符串长度,以及`strstr`函数来查找指定单词。以下是一个简单的示例程序:
```c
#include <iostream>
#include <string.h> // 包含必要的字符串处理函数
int main() {
char input[100]; // 创建一个字符数组来存储用户输入
std::cout << "请输入一行包含单词'one'的字符串: ";
fgets(input, sizeof(input), stdin); // 使用fgets读取一行用户输入,包括换行符
size_t str_length = strlen(input); // 计算字符串长度
int one_count = 0; // 初始化单词"one"的计数器
// 查找单词"one"及其出现次数
char* start = strstr(input, "one"); // 查找第一个"one"
while (start != NULL) { // 只要找到一次就更新计数
one_count++;
start = strstr(start + 1, "one"); // 继续查找下一个"one"
}
std::cout << "输入字符串的长度是: " << str_length << "\n";
std::cout << "单词'one'出现了 " << one_count << " 次。\n";
return 0;
}
```
这个程序首先读取用户的输入,然后遍历字符串,每找到一次"one"就增加计数器。最后显示字符串长度和单词"one"出现的次数。
注意:虽然`string.h`已经过时,但在Dev-C++中,它仍然可用。现代C++推荐使用`std::string`和相关标准库函数。
阅读全文