我有这个代码,假设接收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);
}
答案 0 :(得分:1)
这个for
循环
for(i=strlen(args); i !=1; i--){
nome[i]=args[i];
}
复制除第一个和第二个之外的所有字符(即在索引0
和1
处),但由于它将字符放在旧位置,因此最初的两个字符最终未初始化。
您可以使用strcpy
跳过第一个字符,从而完全避免for
循环
strcpy(nome, &args[1]);
或者您可以首先避免复制,删除nome
,然后将&args[1]
传递给该函数:
if (args[0] == '_') {
return lerficheiro(&args[1]);
}