[英]return pointer from a function in c
寫入函數獲取字符串
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);
}
首先,您的規范尚不清楚。 在開始編碼之前,請確保該規范有意義。 它沒有說明如果找不到字符該怎么辦 ,因此您無法在知道之前編寫此函數。
即使未找到該字符,您的函數也必須始終返回某些內容。 一種常見的實現方法是在這種情況下返回空指針。
您的指針應該指向找到的字符,而不是指向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
}
如果s
是字符串,則s[i]
表示字符串中的第i個字符,而s + i
表示指向字符串中的第i個字符的指針。 所以你想返回s + i
。 如果找不到字符,您可能還想返回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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.