C语言编程中的问题

1、使用指针形式的形参作为返回值时,无返回

char *strtrimr(char *pstr)
{
    int i;
    i = strlen(pstr) - 1;    
    while (isspace(pstr[i]) && (i >= 0))        
        pstr[i--] = '\0';   
    return pstr;
}

char *strtriml(char *pstr)
{    
    int i = 0,j;    
    j = strlen(pstr) - 1;    
    while (isspace(pstr[i]) && (i <= j))        
        i++;    
    if (0<i)        
        strcpy(pstr, &pstr[i]);    
    return pstr;
}
char *strtrim(char *pstr)
{    
    char *p;    
    p = strtrimr(pstr);   
    return strtriml(p);
}
int get_string(const char*key,char *string)
{
    FILE *fp;
    char line[100];
    fp = fopen(config_file, "r");
    if(fp == NULL){
        perror("Open Config File");
        return -1;
    }

    while(fgets(line, 100, fp)){
        char *p = strtrim(line);
        int len = strlen(p);
        if(len < 0 ) continue;
        if(p[0] == '#') continue;
        if(p[0] == '[') continue;
        if(strstr(p,key) == 0)continue;
        string = strtrim(strchr(p,'=')+1);
        break;
    }
    fclose(fp);
    return 0;
}

在使用get_string获取文件里的某个值时,并未返回该值。
我的解决办法:

sprintf(string,"%s",strtrim(strchr(p,'=')=1);

另外,需要为实参string分配内存,如:

char *string = (char *)malloc(10);
...
free(string);

2、使用stat()函数获取文件状态信息时,如大小,将得到非常大或非常小的值,可以利用某个状态值判断文件是否存在。
3、strtok使用时的段错误
函数原型:

#include <string.h>
char *strtok(char *s, const char *delim);

使用时,如果传递给参数s的是字符常量则执行时会出现Segment fault(段错误)。
原因是,C程序运行时将字符常量存储于只读区域,而strtok操作过程中会修改参数s的值,因此,产生错误。为了避免产生这种错误,编程时要保证传给strtok函数s的值不是常量。比如,将字符串字义为字符数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值