0
我的函数passwords
以char**
作为输入。我需要这个函数在一个位置放置一个特定的字符。我的程序崩溃,我不知道我做错了,但我已经将范围缩小到指针:指向Char阵列指针的指针
// The function
int passwords(int num, int line, char** letters, char** ptrPassword, int length) {
char* password = *ptrPassword;
// Later in the code
password[location] = letters[line][0];
}
这里是主我的电话:
char** password;
password = malloc(length * sizeof(char));
location = length;
//call function
printf("Password at %d is %s \n", rank, passwords(rank, 0, letters, password, length));
我用指针不太经验,有人可以协助吗?
主营:
#include<stdio.h>
#include<stdlib.h>
int passwords(int num, int line, char** letters, char** ptrPassword, int length);
int lengthOfString(char* string);
void print(char** letters, int length);
int location;
int main(){
int numCase;
scanf("%d", &numCase);
int i, length;
for(i = 0; i < numCase; i++){
scanf("%d", &length);
int j;
char** letters = malloc(length*sizeof(char*));
for(j = 0; j < length; j++){
letters[j] = calloc(26, sizeof(char));
scanf("%s", letters[j]);
}
int rank;
scanf("%d", &rank);
//print(letters, j);
char* password;
password = malloc(length * sizeof(char));
location = length;
//call recursion
printf("Password at %d is %s \n", rank, passwords(rank, 0, letters, &password, length));
}
return 0;
}
整函数:
//recursive function
int passwords(int num, int line, char** letters, char** ptrPassword, int length){
char* password = *ptrPassword;
printf("Recursion #%d \n", line);
if(line == length-1){
printf("Line is equal to length \n");
if(num > lengthOfString(letters[line])){
printf("IF \n");
if(num % lengthOfString(letters[line]) == 0){
password[location] = letters[line][lengthOfString(letters[line])];
}
else{
password[location] = letters[line][num % lengthOfString(letters[line]) - 1];
}
printf("location: %d \n", location);
location--;
printf("Password is: %s \n", password);
}
else{
printf("ELSE \n");
if(num/lengthOfString(letters[line]) == 1){
*password[location] = letters[line][0];
}
else{
printf("Alocation: %d \n", location);
password[location] = letters[line][num/lengthOfString(letters[line])];
}
printf("Blocation: %d \n", location);
location--;
printf("Password is: %s \n", password);
}
return lengthOfString(letters[line]);
}
else{
printf("Line is not equal to length \n");
int scalar = passwords(num, ++line, letters, ptrPassword, length);
if (num > scalar){
if(num % scalar == 0){
password[location] = letters[line][lengthOfString(letters[line])];
}
else{
password[location] = letters[line][num % scalar - 1];
}
location--;
}
else{
if(num/scalar == 1){
password[location] = letters[line][0];
}
else{
password[location] = letters[line][num/lengthOfString(letters[line])];
}
location--;
}
return scalar * lengthOfString(letters[line]);
}
}
你可以发布你的整个程序吗?不可能看到你在这里发布的内容有什么问题。 –
您是否使用过像gdb这样的调试器?请张贴更多你的代码。 – Jarvis
您遇到崩溃的输入是什么?你的程序也有编译错误,也许你的意思是'password [location]'而不是'* password [location]'。 – Jarvis