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, strcmp, strcpy, strdup - Perform operations on strings
LIBRARY
Standard C Library (libc.so, libc.a)
SYNOPSIS
#include <string.h>
char *strcat(
char *s1,
const char *s2);
int strcmp(
const char *s1,
const char *s2);
char *strcpy(
char *s1,
const char *s2);
char *strdup(
const char *s1);
STANDARDS
Interfaces documented on this reference page conform to industry standards as follows:
strcat(), strcmp(), strcpy(): XSH4.2
strdup(): XSH4.2
Refer to the standards(5) reference page for more information about industry standards and associated tags.
PARAMETERS
In strcat(), specifies the destination string for appending; in strcmp(), specifies the first of two strings to compare; in strcpy(), spec-
ifies the destination string for the copying; and in strdup(), specifies the string to be duplicated. In strcat(), specifies the string to
be appended to s1; in strcmp(), specifies the second of two strings to compare; and in strcpy(), specifies the source string for the copy-
ing.
Note
[Tru64 UNIX] If you pass a NULL pointer as one of the const char * or char * parameters of a string manipulation function, the function
generates a segmentation violation. To avoid the segmentation violation and cause the function to return zero, change the NULL pointer
treatment for the process before issuing the call to the string manipulation function, as follows: Include the system header file
sys/uswitch.h. Call the uswitch function, as described in the uswitch(2) reference page.
The following program illustrates this procedure:
#include <stdio.h> #include <sys/types.h> #include <sys/uswitch.h>
main() {
size_t retval;
int uswitch_val;
uswitch_val = uswitch(USC_GET,0);
uswitch(USC_SET, uswitch_val | USW_NULLP);
retval = strdup(NULL);
DESCRIPTION
The strcat() function appends a copy of the string pointed to by the s2 parameter (including the terminating null byte) to the end of the
string pointed to by the s1 parameter. The initial byte of s2 overwrites the null byte at the end of the string pointed to by s1. When
operating on overlapping strings, the behavior of this function is unreliable.
The strcmp() function compares the string pointed to by the s1 parameter to the string pointed to by the s2 parameter. The sign of a
nonzero value returned by strcmp() is determined by the sign of the difference between the values of the first pair of bytes (both inter-
preted as unsigned char) that differ in the two compared objects.
The strcmp() function compares strings based on the machine collating order. It does not use the locale-dependent sorting order. Use the
strcoll() or wcscoll() functions for locale-dependent sorting.
The strcpy() function copies the string pointed to by the s2 parameter (including the terminating null byte) to the location pointed to by
the s1 parameter. When operating on overlapping strings, the behavior of this function is unreliable.
The strdup() function returns a pointer to a new string that is an exact duplicate of the string pointed to by the s1 parameter. The mal-
loc() function is used to allocate space for the new string.
RETURN VALUES
On successful completion, the strcat(), strcpy(), and strdup() functions return a pointer to the resulting string. Otherwise, these func-
tions return a null pointer. The strdup() function sets errno to indicate the error.
On successful completion, the strcmp() function returns an integer whose value is greater than, equal to, or less than 0 (zero), according
to whether the s1 string is greater than, equal to, or less than the s2 string.
ERRORS
If the strdup() function fails, errno may be set to the following value: Insufficient storage space is available.
RELATED INFORMATION
Functions: malloc(3), memccpy(3), setlocale(3), strchr(3), strcoll(3), strlen(3), strncasecmp(3), strncat(3), strncmp(3), strncpy(3), strp-
brk(3), strspn(3), strtok(3), strstr(3), strxfrm(3), swab(3), uswitch(2), wcscat(3), wcscmp(3), wcscpy(3)
Standards: standards(5) delim off
string(3)