Strncpy() takes a third argument, which is the maximum number of characters to copy. - C String

C examples for String:String Function

Description

Strncpy() takes a third argument, which is the maximum number of characters to copy.

Demo Code

#include <stdio.h>
#include <string.h>  /* declares strncpy() */

#define SIZE 40/*from w  w w . ja  v  a2 s  .c  o  m*/
#define TARGSIZE 7
#define LIM 5

char * s_gets(char * st, int n);

int main(void){
    char qwords[LIM][TARGSIZE];
    char temp[SIZE];
    int i = 0;
    
    printf("Enter %d words beginning with q:\n", LIM);
    while (i < LIM && s_gets(temp, SIZE))
    {
        if (temp[0] != 'q')
            printf("%s doesn't begin with q!\n", temp);
        else
        {
            strncpy(qwords[i], temp, TARGSIZE - 1);
            qwords[i][TARGSIZE - 1] = '\0';
            i++;
        }
    }
    puts("Here are the words accepted:");
    for (i = 0; i < LIM; i++)
        puts(qwords[i]);
    
    return 0;
}

char * s_gets(char * st, int n){
    char * ret_val;
    int i = 0;
    
    ret_val = fgets(st, n, stdin);
    if (ret_val){
        while (st[i] != '\n' && st[i] != '\0')
            i++;
        if (st[i] == '\n')
            st[i] = '\0';
        else // must have words[i] == '\0'
            while (getchar() != '\n')
                continue;
    }
    return ret_val;
}

Result


Related Tutorials