• +91 9971497814
  • info@interviewmaterial.com

Computer Interview Questions Answers

C Interview Questions Answers

Question - 81 : - How can I convert a number to a string?

Answer - 81 : - The standard C library provides several functions for converting numbers of all formats (integers, longs, floats, and so on) to strings and vice versa The following functions can be used to convert integers to strings: Function Name Purpose itoa() Converts an integer value to a string. ltoa() Converts a long integer value to a string. ultoa() Converts an unsigned long integer value to a string. The following functions can be used to convert floating-point values to strings: Function Name Purpose ecvt() Converts a double-precision floating-point value to a string without an embedded decimal point. fcvt() Same as ecvt(), but forces the precision to a specified number of digits. gcvt() Converts a double-precision floating-point value to a string with an embedded decimal point. Is it possible to execute code even after the program exits the main() function? The standard C library provides a function named atexit() that can be used to perform cleanup operations when your program terminates. You can set up a set of functions you want to perform automatically when your program exits by passing function pointers to the at exit() function.

Question - 82 : - How can I open a file so that other programs can update it at the same time?

Answer - 82 : - Your C compiler library contains a low-level file function called sopen() that can be used to open a file in shared mode. Beginning with DOS 3.0, files could be opened in shared mode by loading a special program named SHARE.EXE. Shared mode, as the name implies, allows a file to be shared with other programs as well as your own. Using this function, you can allow other programs that are running to update the same file you are updating. The sopen() function takes four parameters: a pointer to the filename you want to open, the operational mode you want to open the file in, the file sharing mode to use, and, if you are creating a file, the mode to create the file in. The second parameter of the sopen() function, usually referred to as the operation flag parameter, can have the following values assigned to it: Constant Description O_APPEND Appends all writes to the end of the file O_BINARY Opens the file in binary (untranslated) mode O_CREAT If the file does not exist, it is created O_EXCL If the O_CREAT flag is used and the file exists, returns an error O_RDONLY Opens the file in read-only mode O_RDWR Opens the file for reading and writing O_TEXT Opens the file in text (translated) mode O_TRUNC Opens an existing file and writes over its contents O_WRONLY Opens the file in write-only mode The third parameter of the sopen() function, usually referred to as the sharing flag, can have the following values assigned to it: Constant Description SH_COMPAT No other program can access the file SH_DENYRW No other program can read from or write to the file SH_DENYWR No other program can write to the file SH_DENYRD No other program can read from the file SH_DENYNO Any program can read from or write to the file If the sopen() function is successful, it returns a non-negative number that is the file’s handle. If an error occurs, 1 is returned, and the global variable errno is set to one of the following values: Constant Description ENOENT File or path not found EMFILE No more file handles are available EACCES Permission denied to access file EINVACC Invalid access code Constant Description

Question - 83 : - How can you determine the size of an allocated portion of memory?

Answer - 83 : - You can’t, really. free() can , but there’s no way for your program to know the trick free() uses. Even if you disassemble the library and discover the trick, there’s no guarantee the trick won’t change with the next release of the compiler.

Question - 84 : - What will the preprocessor do for a program?

Answer - 84 : - The C preprocessor is used to modify your program according to the preprocessor directives in your source code. A preprocessor directive is a statement (such as #define) that gives the preprocessor specific instructions on how to modify your source code. The preprocessor is invoked as the first part of your compiler program’s compilation step. It is usually hidden from the programmer because it is run automatically by the compiler. The preprocessor reads in all of your include files and the source code you are compiling and creates a preprocessed version of your source code. This preprocessed version has all of its macros and constant symbols replaced by their corresponding code and value assignments. If your source code contains any conditional preprocessor directives (such as #if), the preprocessor evaluates the condition and modifies your source code accordingly.

Question - 85 : - What is a modulus operator? What are the restrictions of a modulus operator?

Answer - 85 : - A Modulus operator gives the remainder value. The result of x%y is obtained by (x-(x/y)*y). This operator is applied only to integral operands and cannot be applied to float or double.

Question - 86 : - When should a type cast not be used?

Answer - 86 : - A type cast should not be used to override a const or volatile declaration. Overriding these type modifiers can cause the program to fail to run correctly. A type cast should not be used to turn a pointer to one type of structure or data type into another. In the rare events in which this action is beneficial, using a union to hold the values makes the programmer’s intentions clearer.

Question - 87 : - "union" Data Type What is the output of the following program? Why?

Answer - 87 : - #include main() { typedef union { int a; char b[10]; float c; } Union; Union x,y = {100}; x.a = 50; strcpy(x.b,"hello"); x.c = 21.50; printf("Union x : %d %s %f n",x.a,x.b,x.c); printf("Union y : %d %s %f n",y.a,y.b,y.c); }

Question - 88 : - what is meant by the ``equivalence of pointers and arrays'' in C?

Answer - 88 : - Much of the confusion surrounding arrays and pointers in C can be traced to a misunderstanding of this statement. Saying that arrays and pointers are ``equivalent'' means neither that they are identical nor even interchangeable. What it means is that array and pointer arithmetic is defined such that a pointer can be conveniently used to access an array or to simulate an array. In other words, as Wayne Throop has put it, it's ``pointer arithmetic and array indexing [that] are equivalent in C, pointers and arrays are different.'') Specifically, the cornerstone of the equivalence is this key definition: A reference to an object of type array-of-T which appears in an expression decays (with three exceptions) into a pointer to its first element; the type of the resultant pointer is pointer-to-T.   That is, whenever an array appears in an expression, the compiler implicitly generates a pointer to the array's first element, just as if the programmer had written &a[0]. (The exceptions are when the array is the operand of a sizeof or & operator, or is a string literal initializer for a character array. As a consequence of this definition, and in spite of the fact that the underlying arrays and pointers are quite different, the compiler doesn't apply the array subscripting operator [] that differently to arrays and pointers, after all. Given an array a and pointer p, an expression of the form a[i] causes the array to decay into a pointer, following the rule above, and then to be subscripted just as would be a pointer variable in the expression p[i] .If you were to assign the array's address to the pointer: p = a; then p[3] and a[3] would access the same element.

Question - 89 : - Is NULL always defined as 0?

Answer - 89 : - NULL is defined as either 0 or (void*)0. These values are almost identical; either a literal zero or a void pointer is converted automatically to any kind of pointer, as necessary, whenever a pointer is needed (although the compiler can’t always tell when a pointer is needed).

Question - 90 : - Is it acceptable to declare/define a variable in a C header?

Answer - 90 : - A global variable that must be accessed from more than one file can and should be declared in a header file. In addition, such a variable must be defined in one source file. Variables should not be defined in header files, because the header file can be included in multiple source files, which would cause multiple definitions of the variable. The ANSI C standard will allow multiple external definitions, provided that there is only one initialization. But because there’s really no advantage to using this feature, it’s probably best to avoid it and maintain a higher level of portability. Global variables that do not have to be accessed from more than one file should be declared static and should not appear in a header file.

Computer Contributors

Rajeev Katiyar
Yes Baroda

Share your email for latest updates


Our partners