用c语言编写。输入一个字符串s,长度不超过100,输入一个字符c,输出字符c出现在字符串s中的位置。多组数据,每组占2行,第一行为一个字符串,第二行为一个字符输出字符c在字符串s中的位置,如果出现多次则输出多个,用空格隔开。如果没有出现则输出NULL。
时间: 2024-12-11 19:28:31 浏览: 15
在C语言中,你可以通过遍历字符串并检查每个字符是否等于给定字符`c`来解决这个问题。下面是一个简单的程序,它实现了这个功能:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,用于查找字符在字符串中的位置
void find_char_in_string(const char* s, char c);
int main() {
// 处理多组数据
int num_tests;
scanf("%d", &num_tests);
for (int i = 0; i < num_tests; ++i) {
char str[101];
char search_char;
printf("请输入第 %d 组数据的第一行字符串:\n", i + 1);
fgets(str, sizeof(str), stdin); // 读取一行字符串,注意去掉末尾的换行符
str[strlen(str) - 1] = '\0'; // 去掉多余的换行符
printf("请输入第 %d 组数据的第二个字符:\n", i + 1);
scanf(" %c", &search_char); // 防止scanf把空格当作下一个字符
find_char_in_string(str, search_char);
printf("\n");
}
return 0;
}
// 查找字符函数
void find_char_in_string(const char* s, char c) {
int pos = -1; // 初始化位置为-1,表示未找到
while (*s != '\0') { // 只要还有字符
if (*s == c) {
if (pos != -1) { // 如果之前已找到过该字符
printf("%d ", pos); // 输出之前的位置
}
pos = s - s; // 更新当前位置(这里是为了演示,实际应为`s - c`)
}
s++;
}
if (pos != -1) { // 如果最后找到了字符
printf("%d", pos); // 输出最后一个位置
} else {
printf("NULL"); // 没有找到字符,输出NULL
}
}
```
在这个程序中,我们首先获取用户输入的测试组数,然后循环处理每一组数据。对于每组数据,我们分别读取字符串和字符,然后调用`find_char_in_string`函数找出字符的位置,并按照描述格式打印结果。
阅读全文