将查询传递给没有第一个char的字符串

时间:2018-04-22 08:52:15

标签: c

我有这个代码,假设接收args(查询字符串)并将其复制到字符串nome而没有第一个字符(_),以便将其发送到另一个函数。我知道if两个都有效,但它似乎在for处断,但我不知道为什么。

ESTADO ler_estado(char *args) {
    char nome[strlen(args)-1];
    int i;

    if(strlen(args) == 0)
        return inicializar();

    if(args[0] =='_'){

        for(i=strlen(args); i !=1; i--){
            nome[i]=args[i];
        }

        return lerficheiro(nome);
    } 

    return str2estado(args);
}

1 个答案:

答案 0 :(得分:1)

这个for循环

for(i=strlen(args); i !=1; i--){
    nome[i]=args[i];
}

复制除第一个和第二个之外的所有字符(即在索引01处),但由于它将字符放在旧位置,因此最初的两个字符最终未初始化。

您可以使用strcpy跳过第一个字符,从而完全避免for循环

strcpy(nome, &args[1]);

或者您可以首先避免复制,删除nome,然后将&args[1]传递给该函数:

if (args[0] == '_') {
    return lerficheiro(&args[1]);
}