2013-01-06 15 views
5

आई से नया सी और chdir() का उपयोग कर परेशानी हो रही है। मैं उपयोगकर्ता इनपुट प्राप्त करने के लिए एक फ़ंक्शन का उपयोग करता हूं, फिर मैं इस से एक फ़ोल्डर बनाता हूं और उस फ़ोल्डर में chdir() का प्रयास करता हूं और दो और फाइलें बनाता हूं। जब भी मैं खोजक (मैन्युअल रूप से) के माध्यम से फ़ोल्डर तक पहुंचने का प्रयास करता हूं, मुझे अनुमति नहीं है। वैसे भी इसके लिए मेरा कोड है, कोई सुझाव?सी में कामकाजी निर्देशिका बदल रहा है?

int newdata(void){ 
    //Declaring File Pointers 
    FILE*passwordFile; 
    FILE*usernameFile; 

    //Variables for 
    char accountType[MAX_LENGTH]; 
    char username[MAX_LENGTH]; 
    char password[MAX_LENGTH]; 

    //Getting data 
    printf("\nAccount Type: "); 
    scanf("%s", accountType); 
    printf("\nUsername: "); 
    scanf("%s", username); 
    printf("\nPassword: "); 
    scanf("%s", password); 

    //Writing data to files and corresponding directories 
    umask(0022); 
    mkdir(accountType); //Makes directory for account 
    printf("%d\n", *accountType); 
    int chdir(char *accountType); 
    if (chdir == 0){ 
     printf("Directory changed successfully.\n"); 
    }else{ 
     printf("Could not change directory.\n"); 
    } 

    //Writing password to file 
    passwordFile = fopen("password.txt", "w+"); 
    fputs(password, passwordFile); 
    printf("Password Saved \n"); 
    fclose(passwordFile); 

    //Writing username to file 
    usernameFile = fopen("username.txt", "w+"); 
    fputs(password, usernameFile); 
    printf("Password Saved \n"); 
    fclose(usernameFile); 

    return 0; 


} 
+1

यह लाइन बहुत अजीब है: 'int chdir (char * accountType);' – lbonn

उत्तर

5

आप वास्तव में नहीं परिवर्तन निर्देशिका, तो आप सिर्फ एक समारोह प्रोटोटाइप chdir के लिए घोषित है। फिर आप शून्य के विरुद्ध उस फ़ंक्शन पॉइंटर की तुलना करना जारी रखते हैं (जो NULL जैसा ही है) यही कारण है कि यह विफल हो जाता है।

आप प्रोटोटाइप के लिए हेडर फाइल <unistd.h>, और फिर वास्तव में कॉल समारोह शामिल करना चाहिए:

if (chdir(accountType) == -1) 
{ 
    printf("Failed to change directory: %s\n", strerror(errno)); 
    return; /* No use continuing */ 
} 
+0

तो अगर आप मुझे यह नहीं मानते कि मैं खाता टाइप कैसे बदलूं और कोड में अनुसरण की गई दो फाइलें कैसे बनाऊं? क्षमा करें मैं सी के लिए नया = = और उत्तर के लिए धन्यवाद। –

3
int chdir(char *accountType); 

फ़ंक्शन को कॉल नहीं है, बजाय कोड निम्न प्रयास करें:

mkdir(accountType); //Makes directory for account 
printf("%d\n", *accountType); 
if (chdir(accountType) == 0) { 
    printf("Directory changed successfully.\n"); 
}else{ 
    printf("Could not change directory.\n"); 
} 

भी, printf लाइन संदिग्ध लगती है, मुझे लगता है कि आप प्रिंट खाता चाहते हैं टाइप टाइपिंग:

printf("%s\n", accountType); 
संबंधित मुद्दे