1:寻找在t串中s串出现的位置,没有找到返回-1
#include
#define MAXLEN 10000
int mygetline(char line[],int maxlen);
int findstr(char line[],char old[]);
int main(void)
{
int len,address,linenum = 1;
char line[MAXLEN];
char old[] = "old";
while((len = mygetline(line,MAXLEN)) > 0){
if((address = findstr(line,old)) > 0){
printf("the first address find the str line:%d : %d \n",linenum,address);
break;
}
linenum ++;
}
if(len <= 0)
printf("can not find the string \n");
return 0;
}
int mygetline(char line[],int maxlen)
{
int i;
int c;
for(i = 0;i < maxlen - 2 && (c = getchar()) != EOF && c != '\n';i ++){
line[i] = c;
}
if(c == '\n'){
line[i] = c;
i ++;
}
line[i] = '\0';
return i;
}
int findstr(char line[],char old[])
{
int i,j,k;
for(i = 0;line[i] != '\n';i ++){
for(j = i,k = 0;old[k] != '\0' && line[j] == old[k];k ++,j ++)
;
if(k > 0 && old[k] == '\0'){
return i;
}
}
return -1;
}
2:static
(1)可以更改变量生存周期:
void fun(int i,int j)
{
int count; //这个count的作用域在这个函数中,在函数执行完之后count变量自动销毁
static int count; //加了static,这个count的作用域还是在这个函数中,但是count的生存周期不知是在这个函数中,
//static int count的内存分配到堆上了,而不是放在栈中了
}
(2)修改函数作用域
static void fun(int i,int j)
{
…………
return;
}
将这个函数的作用域限制在一个文件中,其他文件调用不到这个函数。
3:在函数外面定义的变量都是全局变量
全局变量可以被extern到别的文件里去。
比如:a.c 中有int a = 0; b.c中要使用a这个变量 extern int a;(进行声明)
4:不要使用rigister,volatole在底层变成中也可能出问题。即使使用了编译器也会忽略掉,效果也不会很好。
阅读(1397) | 评论(0) | 转发(0) |