10-03-2008
filename[0] is the first character of the string. If the string is empty, the first character will be the terminator null byte.
C string-handling functions generally cannot read past a null byte. Your notation " ", `\0` is extremely non-standard, and seems to correspond to a string consisting of a space, followed by a null byte (which is usually not explicitly marked or required; it's the end of string, plain and simple). That string obviously has a length of one.
The C equality operator == does not compare strings in any meaningful way; you need to use a function such as strcmp. (I too thought this was shocking when I was learning C.) You can compare individual single characters (denoted by single quotes) one by one, which is what strcmp basically does in a loop over the strings it compares. Double quotes are used around strings (character arrays).
The C string tutorial which was already pointed out to you once probably explains all of this a lot better. Please read it.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
How one can measure the length of a string
but not with the help of awk utility
Can we write shell script for the same ? (2 Replies)
Discussion started by: dilipluhar
2 Replies
2. UNIX for Dummies Questions & Answers
Hi all,
pls help me in finding the length of the given string,
do we need to write a code seperately or is there any command??
pls help. (3 Replies)
Discussion started by: vasikaran
3 Replies
3. Shell Programming and Scripting
Hi all,
I have tried the following simple code in ksh. (length.sh)
#! /usr/bin/ksh
var="xxxxxx0987890"
echo stringlength is ${#var}
but this gives me a error saying "length.sh: bad substitution"
Can some one please help me in resolving this. (4 Replies)
Discussion started by: ssgrpid
4 Replies
4. Shell Programming and Scripting
Hi guys, I hope you can help me with my problem.
I have a text file that contains lines like this:
78 ANGELO -809.05
79 ANGELO2 -5,000.06
I need to find all occurences of amounts that are negative and replace them with x's
78 ANGELO xxxxxxx
79... (4 Replies)
Discussion started by: amangeles
4 Replies
5. Shell Programming and Scripting
Hello All,
Plz help me with:
I have a csv file with data separated by ',' and optionally enclosed by "". I want to check each of these values to see if they exceed the specified string length, and if they do I want to cut just that value to the max length allowed and keep the csv format as it... (9 Replies)
Discussion started by: ozzy80
9 Replies
6. UNIX for Dummies Questions & Answers
Hi
lets say i have a variable
output="string"
how can you find the length of the string contained in this variable? i guess "wc" cannot be used. its only for files. (8 Replies)
Discussion started by: silas.john
8 Replies
7. UNIX for Dummies Questions & Answers
HI
In my script, i am reading the input from the user and want to find the length of the string.
The input may contain leading spaces. Right now, when leading spaces are there, they are not counted.
Kindly help me
My script is like below. I am using the ksh.
#!/usr/bin/ksh
echo... (2 Replies)
Discussion started by: dayamatrix
2 Replies
8. Shell Programming and Scripting
let image that we have string:
QQQQQQQ:ABCDE:FFFFFF:GGGGG
in second field can be 0 or 5 characters
if A exist i need set variable ex: VAR=yes
if B exist i need set variable ex: VAR1=yes
if C exist i need set variable ex: VAR2=yes
etc ...
if second field is empty no variable to set
if... (4 Replies)
Discussion started by: vikus
4 Replies
9. Shell Programming and Scripting
Hi All,
One of my source file is having Date column and the format of the column is YYYY-MM-DD. As per my business logic I have to check if the date format either YYY-MM-DD or YYYY-M-DD. If any records are in this format then I have print all the records and send those invalid records through... (4 Replies)
Discussion started by: suresh_target
4 Replies
10. Shell Programming and Scripting
I have this script which is very easy:
file=`echo 01114`
echo $file
01114
then I ran this
if ; then echo "yes";fi
it returned yes even though there are only 5 digits there
So then I tried
file=`echo abcd`
echo $file
abcd
if ]; then echo "yes";fi
if ]; then echo "yes";fi
It... (2 Replies)
Discussion started by: newbie2010
2 Replies
STRING(3) Library Functions Manual STRING(3)
NAME
strcat, strncat, strcmp, strncmp, strcpy, strncpy, strlen, index, rindex - string operations
SYNOPSIS
char *strcat(s1, s2)
char *s1, *s2;
char *strncat(s1, s2, n)
char *s1, *s2;
strcmp(s1, s2)
char *s1, *s2;
strncmp(s1, s2, n)
char *s1, *s2;
char *strcpy(s1, s2)
char *s1, *s2;
char *strncpy(s1, s2, n)
char *s1, *s2;
strlen(s)
char *s;
char *index(s, c)
char *s, c;
char *rindex(s, c)
char *s;
DESCRIPTION
These functions operate on null-terminated strings. They do not check for overflow of any receiving string.
Strcat appends a copy of string s2 to the end of string s1. Strncat copies at most n characters. Both return a pointer to the null-termi-
nated result.
Strcmp compares its arguments and returns an integer greater than, equal to, or less than 0, according as s1 is lexicographically greater
than, equal to, or less than s2. Strncmp makes the same comparison but looks at at most n characters.
Strcpy copies string s2 to s1, stopping after the null character has been moved. Strncpy copies exactly n characters, truncating or null-
padding s2; the target may not be null-terminated if the length of s2 is n or more. Both return s1.
Strlen returns the number of non-null characters in s.
Index (rindex) returns a pointer to the first (last) occurrence of character c in string s, or zero if c does not occur in the string.
BUGS
Strcmp uses native character comparison, which is signed on PDP11's, unsigned on other machines.
STRING(3)