I am really trying very hard to figure out how to return string from a function to other. Please help me to solve this problem.
Returning Password as String from this function:
char* password(void) {
const maxPassword = 15;
char password[maxPassword + 1];
int charPos = 0;
char ch;
printf(
"\n\n\n\tPassword(max 15 Characters/no numeric value or special char is allowed):\t");
while (1) {
ch = getch();
if (ch == 13) // Pressing ENTER
break;
else if (ch == 32 || ch == 9) //Pressing SPACE OR TAB
continue;
else if (ch == 8) { //Pressing BACKSPACE
if (charPos > 0) {
charPos--;
password[charPos] = '\0';
printf("\b \b");
}
} else {
if (charPos < maxPassword) {
password[charPos] = ch;
charPos++;
printf("*");
} else {
printf(
"You have entered more than 15 Characters First %d character will be considered",
maxPassword);
break;
}
}
} //while block ends here
password[charPos] = '\0';
return password;
}
To this function (but its not printing) :
void newuser(void) {
int i;
FILE *sname, *sid;
struct newuser u1;
sname = fopen("susername.txt", "w");
if (sname == NULL) {
printf("ERROR! TRY AGAIN");
exit(0);
}
printf("\n\n\n\tYourName:(Eg.Manas)\t"); //user name input program starts here
scanf("%s", &u1.UserName);
for (i = 0; i < strlen(u1.UserName); i++)
putc(u1.UserName[i], sname);
fclose(sname);
//sid=fopen("sid.txt","w");
printf("\n\n\n\tUserId:(Eg.54321)\t"); //User Id input starts here
scanf("%d", &u1.UserId);
printf("%s", password());
}