07-13-2018
You are depending on the existence of a terminating NUL. You write 128 total and leave no room in the shorter string str1. You leave no terminating NUL. strcpy printf and lots of other functions depend on the existence of correclty terminated strings. Your sis not.
memset does not care where the end of a string is. Make str1[129], then write less than a total of 129 to str1. Or write fewer characters total to str1.
You are getting undefined behavior. That means I cannot know what your environment is doing or has done. You cannot ever know either. It could crash the program, compose a poem, or order a pizza.
I am guessing. If str1 precedes str2 in memory and each one is word-aligned, then the last character you write to str1[128] effectively cause the end of of str1 to be the actual end of str2. As far as strcpy, printf and so on are concerned.
So, when you exchange order or the two variables you change observed behavior.
These 2 Users Gave Thanks to jim mcnamara For This Post:
10 More Discussions You Might Find Interesting
1. Programming
Dear All,
I have to develope some C functions in Unix for a Magic program. The original MSE code which compiles the attached C program uses a +z option, but the cc compiler don't know this. The complete command in the compiler script is 'cc -c -Aa +z myfile.c'. The warning message is 'The -z... (4 Replies)
Discussion started by: Frankie
4 Replies
2. Programming
can somebody explain about the ANSI C vs POSIX. say i was using open and fopen, i know that open is POSIX, and fopen is ANSI C. i read that that POSIX is a system call and ANSI C is like a standard library function. wouldn't the fopen function has to call on open function anyway to open any kind... (2 Replies)
Discussion started by: bb00y
2 Replies
3. Shell Programming and Scripting
Hi,
I am creating a file in Unix using a shell script. The file is getting created in the Unix - ANSI format. My requirement is to convert it to the PC - ANSI format. Can anyone tell me how to do this?
Thanks,
Sunil (0 Replies)
Discussion started by: ssmallya
0 Replies
4. Programming
Is it not a healthy practice to mix C and C++ standard I/O functions together
e.g.
string name; // this is a declared instance of the string class in C++
printf("\nPlease enter your name: ");
cin >> name;
I did something similar in a program Im designing, and used it several... (1 Reply)
Discussion started by: JamesGoh
1 Replies
5. Programming
Hi everybody,
first of all i apologize if my thread's title doesn't make much sense,but i coudn't find a more appropriate name :)
Then i apologize about my question,which probably will sound trivial for you :) :)
I am working on a program which is being tested in Linux but the final target is... (2 Replies)
Discussion started by: Zipi
2 Replies
6. Shell Programming and Scripting
Hi there
how can i get the result of a command to not give me its error. For example, on certain systems the 'zfs' command below is not available, but this is fine becaues I am testing against $? so i dont want to see the message " command not found" Ive tried outputting to /dev/null 2>&1 to no... (5 Replies)
Discussion started by: hcclnoodles
5 Replies
7. UNIX for Dummies Questions & Answers
Hey, I'm completely new at this and I was wondering if there is a way that I would be able to redirect the log files in a directories standard output and standard error into and excel spreadsheet in anyway?
Please remember don't use too advanced of terminology as I just started using shell... (6 Replies)
Discussion started by: killaram
6 Replies
8. Shell Programming and Scripting
I need to run a cronjob and in the cronjob I execute a script that if there is an error produces standard error so I do
/RUNMYSCRIPT 2> mylogfile.log
However, if it runs correctly, I don't get a standard error output, I get a standard out output. How do I redirect both standard error and... (2 Replies)
Discussion started by: guessingo
2 Replies
9. Programming
I follow the description of wiki (Lamport's bakery algorithm - Wikipedia, the free encyclopedia), then implement that algorithm in C, but it doesn't work, Starving is still here, is the implementation worry?
Only print out:
Thread ID: 0 START!
Thread ID: 0 END!
Thread ID: 0 START!... (2 Replies)
Discussion started by: sehang
2 Replies
10. Shell Programming and Scripting
I have 7 functions those need to be executed as command line inputs, I tried with below code it’s not executing function. If I run the ./script 2 then fun2 should execute , how to initiate that function I tried case and if else also, how to initiate function from command line
if
then... (8 Replies)
Discussion started by: saku
8 Replies
LEARN ABOUT PHP
levenshtein
LEVENSHTEIN(3) 1 LEVENSHTEIN(3)
levenshtein - Calculate Levenshtein distance between two strings
SYNOPSIS
int levenshtein (string $str1, string $str2)
DESCRIPTION
int levenshtein (string $str1, string $str2, int $cost_ins, int $cost_rep, int $cost_del)
The Levenshtein distance is defined as the minimal number of characters you have to replace, insert or delete to transform $str1 into
$str2. The complexity of the algorithm is O(m*n), where n and m are the length of $str1 and $str2 (rather good when compared to simi-
lar_text(3), which is O(max(n,m)**3), but still expensive).
In its simplest form the function will take only the two strings as parameter and will calculate just the number of insert, replace and
delete operations needed to transform $str1 into $str2.
A second variant will take three additional parameters that define the cost of insert, replace and delete operations. This is more general
and adaptive than variant one, but not as efficient.
PARAMETERS
o $str1
- One of the strings being evaluated for Levenshtein distance.
o $str2
- One of the strings being evaluated for Levenshtein distance.
o $cost_ins
- Defines the cost of insertion.
o $cost_rep
- Defines the cost of replacement.
o $cost_del
- Defines the cost of deletion.
RETURN VALUES
This function returns the Levenshtein-Distance between the two argument strings or -1, if one of the argument strings is longer than the
limit of 255 characters.
EXAMPLES
Example #1
levenshtein(3) example
<?php
// input misspelled word
$input = 'carrrot';
// array of words to check against
$words = array('apple','pineapple','banana','orange',
'radish','carrot','pea','bean','potato');
// no shortest distance found, yet
$shortest = -1;
// loop through words to find the closest
foreach ($words as $word) {
// calculate the distance between the input word,
// and the current word
$lev = levenshtein($input, $word);
// check for an exact match
if ($lev == 0) {
// closest word is this one (exact match)
$closest = $word;
$shortest = 0;
// break out of the loop; we've found an exact match
break;
}
// if this distance is less than the next found shortest
// distance, OR if a next shortest word has not yet been found
if ($lev <= $shortest || $shortest < 0) {
// set the closest match, and shortest distance
$closest = $word;
$shortest = $lev;
}
}
echo "Input word: $input
";
if ($shortest == 0) {
echo "Exact match found: $closest
";
} else {
echo "Did you mean: $closest?
";
}
?>
The above example will output:
Input word: carrrot
Did you mean: carrot?
SEE ALSO
soundex(3), similar_text(3), metaphone(3).
PHP Documentation Group LEVENSHTEIN(3)