Sponsored Content
Top Forums Programming unable to send a char parameter from main to a function Post 302564349 by bluetxxth on Thursday 13th of October 2011 12:04:51 PM
Old 10-13-2011
Thank you all for the reply!

Sorry I copied that from my notepad in the wrong order... however, where I am having my problem is right here. When I run this part getopt() I don't get the return variable.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <errno.h>
#include <ctype.h>
#include <stdbool.h>

char getFileMode(char charSetter) {

    char fileType = 0; /*var to hold the value to be returned*/ 
    
    fileType = charSetter;
    
    return fileType; /*end function */
}

int main(int argc, char *argv[]) {

    /*this set of vars for getopt*/
    int c;
    char *options = "t::dfl";
    extern char *optarg;
    extern int optind, optopt, opterr;
    char dir = 'd', 
        file = 'f', 
        slink = 'l', 
        charSetter = 0;
    
    /*this set of vars for the traversal and the test*/
    char fileType = 0;
    char *dirName = argv[argc-1];

    if (argc < 2) {
        printf("mfind [-t type] start1 [start2 ...] name \n"); /*usage*/
    }

while ((c = getopt(argc, argv, options)) != -1) {
    switch (c) {
        case 't':
            optarg = options;
            printf("Type is  set to: %c\n", charSetter); /*should be zero*/
            printf("option: %c\n",c);
            break;
            
        case 'd':
            printf("d is set\n");
            charSetter = dir;
            break;

        case 'f':
            printf("f is set\n");
            charSetter = file;
            
            break;

        case 'l':
            printf("l is set\n");
            charSetter = slink;
            
            break;

        case ':':
            printf("-%c without type\n", optopt);
            break;

        case '?':
            printf("unknown arg %c\n", optopt);
            fprintf(stderr, "Unrecognized option: -%c\n", optopt);
    }

}
    int i;
    for(i=1;i<argc;i++){
    printf("argv: %s\n",argv[i]);
    }

    for (; optind < argc; optind++) {
     fileType = getFileMode(charSetter);
        printf("the filetype is %c", fileType);
    }

return (0);
}

I was trying to do something like this but with getopt() in the program below when I set the values for cahrSetter manually it works fine.

Code:
#include <stdio.h>
#include <stdlib.h>


char getFileMode(char charChanger) {

  printf("charChanger has  %c\n", charChanger);
  
  char *filetype; /*var to hold the value to be returned*/ 
  
  filetype = charChanger; /*set filetype to 'l'*/
  
return filetype;

}

int main(void){

char type = 0;

char     dir = 'd', 
        file = 'f', 
        slink = 'l', 
        charChanger=0;
        
    charChanger =  file;
    type = getFileMode(charChanger);
    printf("type is %c\n", type);
    
return 0;
}

---------- Post updated at 11:04 AM ---------- Previous update was at 10:33 AM ----------

Sorry guys for my lack of attention ... it seems that I had not included the library Smilie

Code:
#include <getopt.h>

However, running the program see that the type is set to ^@ which does not make sense if I for example choose -td in which case the type should be 'd'.
 

10 More Discussions You Might Find Interesting

1. Programming

c++ calling main() function

i just finished a project for a c++ class that i wrote at home on my computer, compiled with gcc. when i brought the code into school it would not compile, it would complain that cannot call main() function. at school we use ancient borland c++ from 1995. anyway my program has 20 different... (3 Replies)
Discussion started by: norsk hedensk
3 Replies

2. Programming

main function

Is it possible to execute any function before main() function in C or C++. (6 Replies)
Discussion started by: arun.viswanath
6 Replies

3. Programming

signal handling while in a function other than main

Hi, I have a main loop which calls a sub loop, which finally returns to the main loop itself. The main loop runs when a flag is set. Now, I have a signal handler for SIGINT, which resets the flag and thus stops the main loop. Suppose I send SIGINT while the program is in subloop, I get an error... (1 Reply)
Discussion started by: Theju
1 Replies

4. Shell Programming and Scripting

Help in separating variables declared in the main function

Hi! I've a C program as shown below.. The line numbers and the statements of the program are separated by a space.. 1 #include<stdio.h> 2 char a,b,c; 3 float x,y,z; 4 int main() 5 { 6 int d,e,f; 7 // further declarations 8 // further declarations 9 /* body*/ 10 } 11 void fun1() 12... (1 Reply)
Discussion started by: abk07
1 Replies

5. Programming

How to access argv[x] from another function other than main???

Hi friends, when I am passing arguments to main, I want another function to be able to have access to that function, the problem is that I am creating athread, which has a function like void *xyz(void *), how can pass the refernce of argv to this function, if you see my program, you will better... (2 Replies)
Discussion started by: gabam
2 Replies

6. Programming

Function main returning int?

H friends, As we know, a function returns a value and that value is saved somwhere. like int Sum( int x, int y ) { return x + y; } Total = Sum( 10, 20 ); The value 30 is saved in variable Total. Now the question is, what int value does the function main return, and where is it... (5 Replies)
Discussion started by: gabam
5 Replies

7. AIX

Calling functions from main program from dlopened library function

Hello All, I am trying to call a function from the calling main program from a dlopened library function, below is the entire code, when I execute it it crashes with sigill. Can you guys help me out I guess I am missing out on the linker flag or something here. besides I am new to AIX and... (1 Reply)
Discussion started by: syedtoah
1 Replies

8. UNIX for Dummies Questions & Answers

[ksh93+] Array fed by function is empty when used in main.

I feel that i am missing something obvious but i can't find what is wrong. I have a script that is launching some functions with "&" and each call is feeding the array with a value. When all calls are finished I just want to retrieve the values of that array. It is looking like that : ... (5 Replies)
Discussion started by: bibou25
5 Replies

9. Programming

A single statement without main function in c

A sample.c file is written with only one single statement. main; Segmentation fault occurred when executed that file. Any statement other than main; is written, for example unix; then it won't compile. why is this behaviour ! (2 Replies)
Discussion started by: techmonk
2 Replies

10. UNIX for Beginners Questions & Answers

A function that refuses to run anywhere else but main()

Hi. I have some code, that for some reason, I could not post it here in this post. Here's the address for it: #if 0 shc Version 4.0.1, Generic Shell Script Compiler GNU GPL Version 3 Md - Pastebin.com First off, I used "shc" to convert the code from shell script to C. And The... (6 Replies)
Discussion started by: ignatius
6 Replies
All times are GMT -4. The time now is 07:16 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy