c语言数组定义 数组查找 文件输出

怎样利用c语言编写一个程序在一个字符串数组中查找一个指定的字符并输出他第一次_百度知道C语言函数返回数组
当前位置:
>> C语言函数返回数组
C语言函数返回数组
C语言函数返回数组实例代码教程 - C编程语言不允许返回整个数组作为函数的参数。但是,您也可以返回一个指针,没有索引到一个数组中指定数组的名称。
C编程语言不允许返回整个数组作为函数的参数。但是,您也可以返回一个指针,没有索引到一个数组中指定数组的名称。你将学习在下一章节中,这样你就可以跳过这一章,直到你理解这个概念在C中的指针的指针
如果你想从一个函数返回一个一维数组,你就必须声明一个函数返回一个指针,在下面的例子:
int * myFunction()
第二点要记住的是,C不提倡返回一个局部变量的地址以外的功能,所以你必须定义的局部变量,如静态变量。
现在,考虑下面的函数,将产生10个随机数,并返回他们使用一个数组,调用这个函数如下:
#include &stdio.h&
/* function to generate and return random numbers */
int * getRandom( )
static int
/* set the seed */
srand( (unsigned)time( NULL ) );
for ( i = 0; i & 10; ++i)
r[i] = rand();
printf( "r[%d] = %d\n", i, r[i]);
/* main function to call above defined function -by /c */
int main ()
/* a pointer to an int */
p = getRandom();
for ( i = 0; i & 10; i++ )
printf( "*(p + %d) : %d\n", i, *(p + i));
当上面的代码一起编译和执行时,它产生的结果的东西如下:
*(p + 0) :
*(p + 1) :
*(p + 2) :
*(p + 3) :
*(p + 4) :
*(p + 5) :
*(p + 6) :
*(p + 7) :
*(p + 8) :
*(p + 9) :C语言(15)
&通常把qsort与bsearch结合起来使用。
qsortqsort的函数声明如下:void qsort(void *base, size_t num, size_t width, int(*comp)(const void *, const void *));参数说明如下:base: 要排序的数组num: 数组中的元素数目width: 每个数组元素占用内存空间,可使用sizeof获得&&&&&&&&&& 如果数组元素为整数,此为sizeof(int)&&&&&&&&&& 如果数组元素为字符串,此为sizeof(char*)&&&&&&&&&& 如果数组元素为结构体car,此为sizeof(car)comp: 比较两个数组元素的比较函数。本比较函数的第一个参数值小于、等于、大于第二参数值时,本比较函数的返回值应分别小于、等于、大于零。注意:这个函数只能将base中的元素升序排列下面给出几个常用的comp函数(最后一个参数)的例子●数组元素为整数int comp(const void *a,const void *b)
return *(int *)a-*(int *)b;
} ●数组元素为字符串int comp(const void *a,const void *b
return strcmp((char *)a,(char *)b);
●数组元素为结构体typedef struct str
char str1[11];
char str2[11];
str strin[100001]={0};
int compare(const void *a,const void *b)
return strcmp( ((str*)a)-&str2 , ((str*)b)-&str2 );
bsearchqsort的函数声明如下:void *bsearch(const void *key, const void *base, size_t *nelem,& size_t width, int(*fcmp)(const void *, const *));参数的意思和qsort的差不多,区别在于:1. qsort用来排序,bsearch用二分法来查找元素2. bsearch中的base必须是升序排列的数组3. 如果数组里有重复的答案,则bsearch会返回其中一个的地址 (具体返回哪一个不确定)4. bsearch有五个自变量,第一个是要找的东西,剩下的跟qsort一模一样5. bsearch如果没找到所求则回传NULL ,否则回传该元素被找到的地址(void *)
使用示例●判断数组中是否存在指定的字符串#include &stdio.h&
#include &stdlib.h&
#include &string.h&
#define size_of_ary(ary) sizeof(ary)/sizeof(*ary)
int SearchComp(const void *, const void *);
int main(void) {
char *units[4] = {"KB", "MB", "GB", "TB"};
key = "GB";
qsort(units, size_of_ary(units), sizeof(char*), comp);
res = (char **)bsearch(&key, units, size_of_ary(units), sizeof(char*), SearchComp);
if (res) {
printf("I found %s/n", *res);
puts("Not found");
return EXIT_SUCCESS;
int SearchComp(const void *p1, const void *p2) {
return strcmp((char *)p1,(char *)p2);
} ●以电话号码为关键字,查找所属人信息& (真正做的时候也许关键字key为(char*)类型会更加直观,但这里只是作个例子,说明参数如何设置。)#include &stdio.h&
#include &stdlib.h&
#include &string.h&
struct person {
char last[16];
char first[11];
char phone[13];
static int comp(const void*, const void*);
int main() {
struct person *p;
static struct person key= { "", "", "555-1965", 0 };
static struct person people[] = { { "ford", "henry", "555-1903", 98 },
{ "lincoln", "abraham", "555-1865", 161 },
{ "ford", "edsel", "555-1965", 53 },
{ "trump", "donald", "555-1988", 49 } };
qsort(people, 4, sizeof people[0], comp);
p=(struct person *)bsearch(&key, people, 4, sizeof people[0], comp);
if (p != NULL) {
printf("%s,%s,%s,%d/n", p-&last, p-&first, p-&phone, p-&age);
puts("Not found");
/*比较函数,关键值是电话号码字段*/
static int comp(const void *x, const void *y) {
struct person *p1=(struct person *)x;
struct person *p2=(struct person *)y;
return strcmp(p1-&phone, p2-&phone);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:90857次
积分:1889
积分:1889
排名:第14964名
原创:85篇
转载:38篇
评论:34条
(1)(2)(1)(1)(1)(1)(1)(1)(5)(4)(1)(1)(7)(1)(4)(15)(24)(16)(37)利用数组进行数据查找_折半查找法_C语言程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
利用数组进行数据查找_折半查找法_C语言程序
上传于||文档简介
&&利​用​数​组​进​行​数​据​查​找​_​折​半​查​找​法​_​C​语​言​程​序
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 c语言数组定义 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信