C语言字符串的问题字符单元化

#define STDC_WANT_LIB_EXT1 1
#include
#include
#include
int main(void)
{
char delimiters[] = " \".,:;!?)(";
char buf[100];
char str[1000];
char * ptr = NULL;
str[0] = '\0';
size_t str_len = sizeof(str);
size_t buf_len = sizeof(buf);
printf("Enter some prose that is less than %zd charaters.\n"
"terminate input by entering an empty line:\n",str_len);
while(true)
{
if(!gets_s(buf, buf_len))
{
printf("Error reading string.\n");
return 1;
}
if(!strnlen_s(buf, buf_len))
break;
if(strcat_s(str, str_len, buf))
{
printf("Maximum permitted input length exceeded.\n");
return 1;
}

  }
printf("The words in the prose that you entered are:\n",str);
unsigned int word_count = 0;
char * pWord = strtok_s(str, &str_len, delimiters, &ptr);
if(pWord)
{
    do
    {
        printf("%-18s",pWord);
        if(++word_count % 5 ==0)
            printf("\n");
        pWord = strtok_s(NULL, &str_len, delimiters, &ptr);
    }while(pWord);
    printf("\n%u words found.\n", word_count);

}else
    printf("No word found.\n");
return 0;

}
问题1: str[100]和buf[1000]是什么?
问题2: str[0] = '\0';是什么意思?
问题3: while循环在干什么?
问题4:strtok_s()工作流程?
望各位大神指教!

C语言中的字符类型为char,C语言中对于字符串的处理则是通过字符数组实现的。和一般字符数组的区别在于,每一个字符串(本质上来说应该是字符数组)的最后一个元素都是'\0',根据这个特点,C语言便可以判断字符串的结束。
1、字符串和数的转换
1.1 函数原型
double atof(const char *nPtr);将字符串nPtr转换为double
int atoi(const char......
答案就在这里:C语言中的字符和字符串
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

问题1: str[100]和buf[1000]是什么?
前面放字符串,后面是缓冲区(buffer)本质都是数组
问题2: str[0] = '\0';是什么意思?
截断字符串,相当于str=""
问题3: while循环在干什么?
遍历字符串
问题4:strtok_s()工作流程?
char *strtok(char s[], const char *delim);
分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则以首字符为分割标准)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。