|
发表于 2023-10-24 11:24:21
|
显示全部楼层
本楼为最佳答案
这段代码存在几个语法问题:
1. 在函数 find_char 的定义中, char *temp = *source; 这行代码是错误的。因为 source 是一个指向字符常量的指针,不能直接解引用赋值给 temp 。应该改为 char *temp = source; 。
2. 在 find_char 函数中的条件判断语句中, *chars == '\0' 这里的等号前面多了一个空格,应该改为 *chars == '\0' 。
3. 在 find_char 函数中的第一个 for 循环中,遍历 chars 数组时,应该使用指针递增 chars++ ,而不是 *chars++ 。
4. 在 find_char 函数中的第二个 for 循环中,遍历 source 字符串时,应该使用指针递增 source++ ,而不是 *source++ 。
修改后的代码如下:
- #include<stdio.h>
- #include<math.h>
- char *
- find_char(char const *source, char const *chars)
- {
- char *temp = source;
- if (source == NULL || chars == NULL)
- {
- return NULL;
- }
- else if (*source == '\0' || *chars == '\0')
- {
- return NULL;
- }
- else
- {
- for (; *chars != '\0'; chars++)/*遍历chs数组*/
- {
- source = temp;
- for (; *source != '\0'; source++)
- {
- if (*source == *chars)
- return source;
- }
- }
- return NULL;
- }
- }
- int main(void)
- {
- char sour[7] = "ABCDEF";
- char chs[7] = "XRCQEF";
- char *result = find_char(sour, chs);
- printf("%c", *result);
- return 0;
- }
复制代码
这样修改后的代码就能正常运行了。 |
|