2009-3-3 by hayabusa
这两天一直在写C代码,也忘了把东西粘上来,顺便把写得函数发上来吧.
1.讲义
1.1
1.1.1常指针与指针常量
const int* p;*p不能变
int* const p;p不能变
1.1.2数组
1.1.3字符串
字符串的所有处理都要仔细分析,
并且对于内存泄漏问题要相当地关注。
strcat
strlen
str_upp
str_low
list
1.1.4struct
1.2
stack:局部变量
静态存储区:全局变量,static变量
heap 堆:自己创建,自己销毁
malloc
free
注意自己释放的同时取消指针的指向。
void f(char** str){
*str=(char*)malloc(10*sizeof(char));
printf("%s",*str);
}
int main(void){
char *p;
f(&p);
return 0;
}
2.作业
2.1 把前边练习的结果改成Hello World
//output.c
//这里要注意的是常量存储在常量存储区内,也是在程序结束是由系统回收。
#include<stdio.h>
char* show(void){
printf("file:output.c-------functionshow: ");
return "Hello World";
}
//test.c
#include "output.c"
int main(void){
char *p=show();
printf("%s\n",p);
return 0;
}
2.2 统计给定字符串中的数字、字母、空格和其它字符出现的次数
#include<stdio.h>
int main(void){
char string[]="abckdksslaeksdfj&283sdf413asdf4~ L LA ^*@^#&!";
char* p=string;
int num=0,character=0,other=0,space=0;
while(*p){
if(*p == ' ')space++;
else if(*p>='0' && *p<='9')num++;
else if((*p>='A' && *p<='Z')||(*p>='a' && *p<='z'))character++;
else other++;
p++;
}
printf("number-character-space-other:%d-%d-%d-%d\n",num,character,space,other);
return 0;
}
2.3 编写函数实现计算字符串长度的功能
/*
* caculate the length of a string
*/
int str_len(const char *string){
int i=0;
while(*(string+i))i++;
return i-1;
}
2.4 编写函数实现字符串合并的功能。两个输入字符串作为参数,返回合并后的结果。(内存泄露问题,怎么解决)
笨啦,后边两种不能解决内存泄漏啊;而且感觉多余一套。看了codesearch上的代码,都觉得脸红啊,算啦,贴上吧,就当是教训了。
/*
* concatenate two strings
*/
char* str_cat(char* org_str,const char* ext_str){
char* const p;
int org_len=str_len(org_str);
while(*((org_str++)+org_len)=*ext_str++);
return p;
}
/* concatenate two strings
* size represent that it will use at almost n characters
*/
char* str_ncat(char *org_str,const char *ext_str,int size){
char* const p=org_str;
int org_len=str_len(org_str);
int i=0;
while((*((org_str++)+org_len)=*ext_str++)&&(++i)<size);
if(i>=size)*(org_str+org_len)='\0';
return p;
}
/*
* concatenate two strings by accessing memory safely.
* if the orginal string is an array,only bite off the more
* characters of the extended string;but the orginal string
* is a char point,renew a block of memory for the orginal,
* that can hold all the characters of these two strings.
*/
char* str_cata(char *org_str,const char *ext_str,int length){
char* const p=org_str;
int i=str_len(org_str);
while((*(org_str+i)=*ext_str++)&&(++i)<length-1);
*(org_str+i)='\0';
return p;
}
char* str_cats(char** org_str,const char *ext_str,int length){
int org_len=str_len(*org_str);
int ext_len=str_len(ext_str);
if(org_len+ext_len>length-1){
if(!(*org_str=realloc(*org_str,(org_len+ext_len+1)*sizeof(char))))
exit(OVERFLOW);
length=org_len+ext_len+1;
}
char* const p=*org_str;
char* q=*org_str+org_len;
while(*q++=*ext_str++);
return p;
}
2.5 编写函数实现字符串拷贝功能
char* str_cpy(char* org_str,char* ext_str){
char* const p=org_str;
while(*org_str++=*ext_str++);
return p;
}
关键的是3-5题
分享到:
相关推荐
FANUC C Language Executor
在这个场景中,标签提到的是“c language for windows”,所以我们将重点讨论在Windows操作系统上搭建C语言的开发环境。 首先,我们需要一个C编译器。最常用的C编译器之一是GCC(GNU Compiler Collection),它包含...
《MISRA C:2012 Guidelines for the use of the C language in critical systems》是MIRA Limited出版的一本关于C语言在关键系统中使用的指南,适用于汽车工业和其他对软件可靠性有极高要求的领域。MISRA(Motor ...
标题中的"C language Code source include every modules"表明这是一个包含C语言源代码的集合,这些代码涵盖了各种功能模块。在描述中,我们了解到这个程序代码库主要用于开发板上的各个模块功能,与dofly开发及使用...
文档《Arm C Language Extensions 2.1.pdf》提供了关于ACLE的详细介绍,包括ACLE的基本概念、特性以及如何使用这些特性来优化基于ARM架构的应用程序。该文档是ARM官方发布的非保密文档,适用于C/C++程序员了解如何...
C Language c语言资料
标题 "C-language-test.rar_C language_language" 暗示了这是一个关于C语言的测试资源,可能包含了一些测试题目和解答。描述 "C language program test" 明确指出这是C语言编程的测试,可能是为了帮助学习者检验自己...
根据提供的文件信息,我们可以推断出这是一份关于C语言参考手册的相关文档。然而,由于提供的部分内容中包含了大量的版权信息、商标声明等非技术性内容,我们无法直接从中提取具体的C语言知识点。因此,我们将主要...
### MISRA-C:2004 指南在关键系统中使用C语言的关键知识点 #### 背景介绍及C语言的应用 MISRA-C:2004指南主要针对的是C语言在关键系统中的使用,特别是汽车工业领域内的实时嵌入式应用。随着技术的发展,C语言因其...
"C-language-standard.zip_c language standard" 提供的是C语言的标准规范,这个压缩包内的"C language standard.pdf"文件详细阐述了C语言的语法、语义以及编程实践中的各种规则。 C语言标准,也称为ANSI C或ISO C...
本压缩包"**C_language_library_function.rar_C language library**"显然是为了帮助初学者理解和记忆C语言的库函数,特别是对那些在编程过程中常遇到库函数使用困扰的人。 首先,我们来讨论一下C语言库函数的重要性...
MISRA C 2012标准是一套由汽车行业软件可靠性协会(MISRA)制定的C语言编程指导方针,主要针对嵌入式控制系统以及独立软件的开发。这些指导方针用于提高在关键系统中使用C语言编程的安全性与可靠性。 在详细阐述...
《MISRA C2012用于关键系统C语言使用指南》是一份由MISRA(The Motor Industry Software Reliability Association)发布的文档,该组织是由制造商、组件供应商和工程咨询公司组成的一个合作机构,旨在推动与安全相关...
标题中的"Split function for c language"指的是在C语言中实现的一种字符串分割函数。在C语言中,处理字符串通常涉及到字符数组和字符串操作函数,如`strtok`等。字符串分割函数是将一个字符串依据特定分隔符切割成...
本书《C Language for Beginners》是针对初学者的C语言学习教材,由SrikanthPragada撰写,旨在为编程新手提供基础知识的奠定。C语言是一种广泛使用的编程语言,它对后续学习如C++、Java和C#等复杂语言有重要的影响。...
【C语言源代码学习(C Language)】 在C语言学习中,源代码是程序的基本组成单元,由一系列符合C语言语法的语句构成。通过编写源代码,我们可以实现各种功能,如控制流、数据处理和输入/输出操作。下面将详细讨论部分...
C语言模板库(C Language Template Library,简称CLTL)是一个为C语言设计的类模板库,旨在增强C语言的功能,使其能更好地支持泛型编程。虽然C++是C的超集,内置了模板机制,但有些开发场景下,仍然需要在纯C环境中...
"C Language Develop Kit" 是一套为C语言开发者准备的工具集,旨在帮助程序员更高效地进行C语言程序的编写、编译、调试和优化。 1. **C语言基础**:C语言的基础包括变量、数据类型(如int、char、float等)、运算符...
"C-language-example-code.rar_c language example" 是一个压缩包,包含了900个C语言的经典实例,旨在帮助学习者更好地理解和掌握C语言的基本概念和编程技巧。 这个压缩包分为上下两部分,我们主要关注的是" C 程序...