strlen inconsistency

This is a discussion on strlen inconsistency within the C Programming forums, part of the General Programming Boards category; Code: #include <stdio.h> #include <string.h> int main(void) { char *num = "73167176531330624919225119674426574742355349194934\ 96983520312774506326239578318016984801869478851843\ 85861560789112949495459501737958331952853208805511\ 12540698747158523863050715693290963295227443043557\ 66896648950445244523161731856403098711121722383113\ 62229893423380308135336276614282806444486645238749\ 30358907296290491560440772390713810515859307960866\ 70172427121883998797908792274921901699720888093776\ 65727333001053367881220235421809751254540594752243\ ...

  1. #1
    Registered User
    Join Date
    Aug 2011
    Posts
    24

    strlen inconsistency

    Code:
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
    	char *num = "73167176531330624919225119674426574742355349194934\
    		96983520312774506326239578318016984801869478851843\
    		85861560789112949495459501737958331952853208805511\
    		12540698747158523863050715693290963295227443043557\
    		66896648950445244523161731856403098711121722383113\
    		62229893423380308135336276614282806444486645238749\
    		30358907296290491560440772390713810515859307960866\
    		70172427121883998797908792274921901699720888093776\
    		65727333001053367881220235421809751254540594752243\
    		52584907711670556013604839586446706324415722155397\
    		53697817977846174064955149290862569321978468622482\
    		83972241375657056057490261407972968652414535100474\
    		82166370484403199890008895243450658541227588666881\
    		16427171479924442928230863465674813919123162824586\
    		17866458359124566529476545682848912883142607690042\
    		24219022671055626321111109370544217506941658960408\
    		07198403850962455444362981230987879927244284909188\
    		84580156166097919133875499200524063689912560717606\
    		05886116467109405077541002256983155200055935729725\
    		71636269561882670428252483600823257530420752963450";
    	
    	printf("%i\n", strlen(num));
    	
    
    
    	return 0;
    }
    The output of this program is 1,038, which I don't understand considering the number is 1,000 digits long. Where did these extras come from?

  2. #2
    and the hat of wrongness Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    32,434
    All the white space at the start of each continued line.

    If you want to fold long lines, then do it like this.
    Code:
    char *folded = "this is "
                   "a folded line";
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.
    I support http://www.ukip.org/ as the first necessary step to a free Europe.

  3. #3
    Registered User
    Join Date
    Aug 2010
    Posts
    231
    ANSI C specifies max. 509 chars in one string literal. Use the solution above and split your chars in more than one literals.

  4. #4
    Banned
    Join Date
    Aug 2010
    Location
    Ontario Canada
    Posts
    9,547
    Quote Originally Posted by BillyTKid View Post
    ANSI C specifies max. 509 chars in one string literal. Use the solution above and split your chars in more than one literals.
    Yet, oddly enough he does have 1038 characters in a string literal...

    It's the leading spaces that are tripping him up.

  5. #5
    Registered User
    Join Date
    May 2010
    Posts
    2,693
    The latest C standard specifies:
    5.2.4.1 Translation limits
    The implementation shall be able to translate and execute at least one program that
    contains at least one instance of every one of the following limits:14)
    — 4095 characters in a logical source line
    — 4095 characters in a character string literal or wide string literal (after concatenation)
    Jim

  6. #6
    Registered User
    Join Date
    Aug 2011
    Posts
    24
    Thanks Salem, that sorted it.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. program inconsistency
    By bchan90 in forum C Programming
    Replies: 4
    Last Post: 12-09-2008, 01:57 PM
  2. Inconsistency detected
    By fidodidohk in forum C++ Programming
    Replies: 5
    Last Post: 04-05-2007, 05:12 AM
  3. FindWindow inconsistency
    By CondorMan in forum C++ Programming
    Replies: 7
    Last Post: 06-22-2006, 04:35 AM
  4. Strlen(...)
    By Korhedron in forum C++ Programming
    Replies: 6
    Last Post: 06-10-2003, 03:02 PM
  5. strlen...int?
    By Extol in forum C++ Programming
    Replies: 9
    Last Post: 04-17-2003, 04:35 PM

Tags for this Thread


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21