Sponsored Content
Top Forums Programming Logical Error With Type Conversion In C Post 303021933 by Azrael on Monday 20th of August 2018 07:05:32 PM
Old 08-20-2018
Very odd. I had tried using letters in place of the numbers I had in the switch/case before, but I could not get it to work. Now it works with the exert I provided earlier. I didn't show in that exert, but I also included digits, letters and special characters with the rest of the code. Perhaps I just didn't escape some special character properly, but I can come back to that later.

If I print out the m_array with something like this:

Code:
for (i = 0; i < DATA_SIZE; i++){
            printf("%x\n", m_array[i]);
    }


I get back an array of random numbers that I generated from another function:

Code:
 ./test | tail 
8885ffc9
77a822d5
bf34d05d
bc229af3
fc171fb9
ab7d3609
4815ef59
83facdc3
7d77bf58
881d17ea


Then I have another function that should randomly select an element from that array, or for any of the arrays from characters that match, and use one number to replace the letter given. Sorry if that wasn't clear.

With using the characters in the switch/case I guess the whole conversion of char arrays to ints won't be needed. I could just create a new array with the numbers that are switched for the letters I guess.


I'm sure you're right about this part, but I'd like to understand why:

Code:
data[j] = ranit(m_array);


That function should just grab one random element that's a number from the m_array. I guess I'm assigning it wrong there?
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Error in creating logical partition

Dear Members, I am using SCO-Unix 5.0.5. I have created 2 logical drives but some of the blocks are overlapped and are now giving warning during startup. I have used fsck to settle the problems but to no avail. Kindly help me to sort out the problem. Thanks (3 Replies)
Discussion started by: nagendrajaiswal
3 Replies

2. Shell Programming and Scripting

Does KSH support data type conversion?

Hello,everyone here. I'm coding with KSH to achieve exploring the disk space and judging whether it closes to overflow.But It seems that no one way to convert a string variable to integer. df | read A B C D E F G H I J K L print ${L} Can I convert L to integer type? Thanks for... (2 Replies)
Discussion started by: joshuaduan
2 Replies

3. Shell Programming and Scripting

error during run: St9bad_alloc - Getting this error while using some conversion progr

Hi all, It will be very useful If you spare some time with me for this worrying error. I am calling a conversion program which is written in C++ for converting a file format to different format. It was working fine for this past 2 yrs. But now it is not working since the file size has been... (1 Reply)
Discussion started by: sathu_pec
1 Replies

4. AIX

Type of Logical Volume lost after vgexport/gvimport process

Hi, I have the next doubt about of lost of characteristic of LV in my original configuration # lsvg -l ifxvg ifxvg: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT aw64m_01 jfs 1 1 1 open/syncd N/A aw64m_02 jfs 1... (1 Reply)
Discussion started by: cerber0
1 Replies

5. UNIX for Dummies Questions & Answers

Build Error: error: dereferencing pointer to incomplete type

I'm getting the following Error: prepare_pcap.c: In function `prepare_pkts': prepare_pcap.c:127: error: dereferencing pointer to incomplete type prepare_pcap.c:138: error: dereferencing pointer to incomplete type ==================================== This is the part of the relevant... (8 Replies)
Discussion started by: katwala
8 Replies

6. Shell Programming and Scripting

Logical error

I have this script to uvscan-update. Seems like that i am getting logical error at the end of the script. It is updating the script and also giving the error message to update it manually. I have deleted the DAT files to see if it will create new and it does. Below is the error and the script: ... (1 Reply)
Discussion started by: mk07md
1 Replies

7. Shell Programming and Scripting

Military type format date/time conversion

Hello All, I have a requirement to convert a 12 hour format to 24 hour time format and the sample input /out put is below Input Time format : Nov 2 2011 12:16AM Out Put Format : Nov 2 2011 0:16 Input : Nov 2 2011 4:16PM Out Put: Nov 2 2011 16:16 I have done this using a... (6 Replies)
Discussion started by: jambesh
6 Replies

8. Programming

type conversion C, atoi()

In the book "The C programming language"; second edition, chapter 2.7 there is a snippet which is supposed to: "convert a string of digits into its numeric equivalent". int atoi(char s) { int i, n; n = 0; for ( i = 0; s >= '0' && s <= '9'; ++i) n = 10 * n + (s -... (4 Replies)
Discussion started by: tornow
4 Replies

9. Shell Programming and Scripting

Logical if error

Hi All, I am writing a simple script to read a file and display the lines with char count between 20 and 25. I am stuck with the if condition here. Tried a lot but still getting an error on the if condition # if && if && My script is very simple as below, not able to understand... (7 Replies)
Discussion started by: nss280
7 Replies
explain_sprintf(3)					     Library Functions Manual						explain_sprintf(3)

NAME
explain_sprintf - explain sprintf(3) errors SYNOPSIS
#include <libexplain/sprintf.h> const char *explain_sprintf(char *data, const char *format, ...); const char *explain_errno_sprintf(int errnum, char *data, const char *format, ...); void explain_message_sprintf(char *message, int message_size, char *data, const char *format, ...); void explain_message_errno_sprintf(char *message, int message_size, int errnum, char *data, const char *format, ...); DESCRIPTION
These functions may be used to obtain explanations for errors returned by the sprintf(3) system call. explain_sprintf const char *explain_sprintf(char *data, const char *format, ...); The explain_sprintf function is used to obtain an explanation of an error returned by the sprintf(3) system call. The least the message will contain is the value of strerror(errno), but usually it will do much better, and indicate the underlying cause in more detail. The errno global variable will be used to obtain the error value to be decoded. data The original data, exactly as passed to the sprintf(3) system call. format The original format, exactly as passed to the sprintf(3) system call. Returns: The message explaining the error. This message buffer is shared by all libexplain functions which do not supply a buffer in their argument list. This will be overwritten by the next call to any libexplain function which shares this buffer, including other threads. Note: This function is not thread safe, because it shares a return buffer across all threads, and many other functions in this library. Example: This function is intended to be used in a fashion similar to the following example: errno = EINVAL; int result = sprintf(data, format, ...); if (result < 0) { fprintf(stderr, "%s ", explain_sprintf(data, format, ...)); exit(EXIT_FAILURE); } The above code example is available pre-packaged as the explain_sprintf_or_die(3) function. explain_errno_sprintf const char *explain_errno_sprintf(int errnum, char *data, const char *format, ...); The explain_errno_sprintf function is used to obtain an explanation of an error returned by the sprintf(3) system call. The least the mes- sage will contain is the value of strerror(errno), but usually it will do much better, and indicate the underlying cause in more detail. errnum The error value to be decoded, usually obtained from the errno global variable just before this function is called. This is neces- sary if you need to call any code between the system call to be explained and this function, because many libc functions will alter the value of errno. data The original data, exactly as passed to the sprintf(3) system call. format The original format, exactly as passed to the sprintf(3) system call. Returns: The message explaining the error. This message buffer is shared by all libexplain functions which do not supply a buffer in their argument list. This will be overwritten by the next call to any libexplain function which shares this buffer, including other threads. Note: This function is not thread safe, because it shares a return buffer across all threads, and many other functions in this library. Example: This function is intended to be used in a fashion similar to the following example: errno = EINVAL; int result = sprintf(data, format, ...); if (result < 0) { int err = errno; fprintf(stderr, "%s ", explain_errno_sprintf(err, data, format, ...)); exit(EXIT_FAILURE); } The above code example is available pre-packaged as the explain_sprintf_or_die(3) function. explain_message_sprintf void explain_message_sprintf(char *message, int message_size, char *data, const char *format, ...); The explain_message_sprintf function is used to obtain an explanation of an error returned by the sprintf(3) system call. The least the message will contain is the value of strerror(errno), but usually it will do much better, and indicate the underlying cause in more detail. The errno global variable will be used to obtain the error value to be decoded. message The location in which to store the returned message. If a suitable message return buffer is supplied, this function is thread safe. message_size The size in bytes of the location in which to store the returned message. data The original data, exactly as passed to the sprintf(3) system call. format The original format, exactly as passed to the sprintf(3) system call. Example: This function is intended to be used in a fashion similar to the following example: errno = EINVAL; int result = sprintf(data, format, ...); if (result < 0) { char message[3000]; explain_message_sprintf(message, sizeof(message), data, format, ...); fprintf(stderr, "%s ", message); exit(EXIT_FAILURE); } The above code example is available pre-packaged as the explain_sprintf_or_die(3) function. explain_message_errno_sprintf void explain_message_errno_sprintf(char *message, int message_size, int errnum, char *data, const char *format, ...); The explain_message_errno_sprintf function is used to obtain an explanation of an error returned by the sprintf(3) system call. The least the message will contain is the value of strerror(errno), but usually it will do much better, and indicate the underlying cause in more detail. message The location in which to store the returned message. If a suitable message return buffer is supplied, this function is thread safe. message_size The size in bytes of the location in which to store the returned message. errnum The error value to be decoded, usually obtained from the errno global variable just before this function is called. This is neces- sary if you need to call any code between the system call to be explained and this function, because many libc functions will alter the value of errno. data The original data, exactly as passed to the sprintf(3) system call. format The original format, exactly as passed to the sprintf(3) system call. Example: This function is intended to be used in a fashion similar to the following example: errno = EINVAL; int result = sprintf(data, format, ...); if (result < 0) { int err = errno; char message[3000]; explain_message_errno_sprintf(message, sizeof(message), err, data, format, ...); fprintf(stderr, "%s ", message); exit(EXIT_FAILURE); } The above code example is available pre-packaged as the explain_sprintf_or_die(3) function. SEE ALSO
sprintf(3) formatted output conversion explain_sprintf_or_die(3) formatted output conversion and report errors COPYRIGHT
libexplain version 0.52 Copyright (C) 2010 Peter Miller explain_sprintf(3)
All times are GMT -4. The time now is 01:57 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy