写入获取字符串
s
和charc
的函数,用于检查char是否显示在s
中,如果是,则返回指向c
显示的第一个位置的指针在s
这是我的代码。我不知道我做了什么“返回指针”,这是正确的吗?:
#include <stdio.h>
char *foo(char s[], char c)
{
int i;
char *ptr;
for(i=0;s[i];i++)
{
if(s[i]==c)
{
printf("result: %d",i);
*ptr=i;
return ptr;
}
}
}
void main()
{
char s[]="Error404";// some string
char c='r';// some char
foo(s,c);
}
答案 0 :(得分:4)
首先,您的规格尚不清楚。在开始编码之前,请确保规范有意义。它没有说明如果你没有找到该角色该怎么办,所以在你知道之前你不能写这个函数。
即使未找到角色,您的功能也必须始终返回。实现这一点的常用方法是在这种情况下返回空指针。
你的指针应该指向找到的字符,而不是i
这是一个整数,这是没有任何意义的。
将代码更正为:
char* foo (char s[], char c)
{
char *ptr = NULL;
for(int i=0; s[i]!='\0'; i++)
{
if(s[i]==c)
{
ptr = &s[i]; // point at the address of item number i in s
break;
}
}
return ptr; // will return NULL if not found, otherwise a pointer to the found item
}
答案 1 :(得分:1)
如果s
是字符串,则s[i]
表示字符串中的第i个字符,而s + i
表示字符串中第i个字符的指针。所以你想要返回s + i
。如果找不到char,您可能还想返回NULL
。
#include <stdio.h>
char *foo(char s[], char c)
{
int i;
for(i = 0; s[i]; i++)
{
if(s[i] == c)
return (s + i);
}
return (NULL);
}