关于sizeof( )函数的问题
											 程序代码:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define  _STD_WANT_LIB_EXT1_ 1
#define  Count   5
#define  buf_len  100
int main(void)
{
    char buf[buf_len] = {'0'};  // input buffer 
    int str_count = 0;          // string 1st count = 0
    int str_len = 0;            // string current length
    int outp_str_len = 0;       // output string length
    int str_max = Count;        // max count input string
    char** ptemp = NULL;
    char** ps = (char**)calloc(str_max, sizeof(char*));//5 * char* = 40 byte
    do
    {
        printf("input string you want (less than %d wards):", buf_len);
        fflush(stdin);
        char* ptest = (char*)gets_s(buf, sizeof(buf));
        if(ptest == NULL)
        {
            printf("gets_s() error\n");
            free(ps);
            ps = NULL;
            //free(ptest);
            //ptest = NULL;
            return 1;
        }
        //printf("%s\n", buf);
        else if(buf[0] == '0')
        {
            printf("You input nothing!!!\n");
            break;
        }
        else if(str_count == str_max)
        {
            str_max += str_count/4;         //add 25% merry
            ptemp = realloc(ps, str_max);
            if(ptemp == NULL)
            {
                printf("realloc() error\n");
                return 2;
            }
            ps = ptemp;
        }
        str_len = strnlen_s(buf, sizeof(buf)) + 1;// buf current length must <= buf_len
        ps[str_count] = malloc(str_len);       //allocation current merry to ps[...]
        if(ps[str_count] == NULL)
        {
            printf("error malloc() error!!!\n");
            return 3;
        }
        strcpy_s(ps[str_count++] ,str_len, buf);
        printf("Do you want to input another string? (Y/N): ");
        fflush(stdin);        
    }
    while(tolower((char)getchar()) == 'y');
    printf("%s\n", ps[str_count-1]);   //string output success
    outp_str_len = strnlen_s(ps[str_count - 1], sizeof(ps[str_count - 1]));//some errors!! sizeof() function
    if(outp_str_len == 0)
    {
        printf("strnlen() error!!!\n");
        return 4;
    }
    printf("outp_str_len = %d\n", outp_str_len); //length of string wrong
    //printf("sizeof(char*) = %zd\n", sizeof(char*));
    return 0;
        //这个程序可以输入100个字符以内的任意个数的字符串,我想用它给输入的字符串进行长度排序,程序没写完,在检查字符串长度时出错了。
        //我觉得是sizeof()的问题。。。。
}
										
					
	
 
											





 
	     
					
				
			


