|
|
1.1 root 1:
2:
3: strncpy() String Function strncpy()
4:
5:
6:
7:
8: Copy one string into another
9:
10: #include <string.h>
11: cchhaarr *ssttrrnnccppyy(_s_t_r_i_n_g_1, _s_t_r_i_n_g_2, _n)
12: cchhaarr *_s_t_r_i_n_g_1, *_s_t_r_i_n_g_2; uunnssiiggnneedd _n;
13:
14: strncpy copies up to n bytes of string2 into string1, and returns
15: string1. Copying ends when n bytes have been copied or a null
16: character has been encountered, whichever comes first. If
17: string2 is less than n characters in length, string2 is padded to
18: length n with one or more null bytes.
19:
20: ***** Example *****
21:
22: This example, called sswwaapp.cc, reads a file of names, and changes
23: them from the format
24:
25:
26: first_name [middle_initial] last_name
27:
28:
29: to the format
30:
31:
32: last_name, first_name [middle_initial]
33:
34:
35: It demonstrates ssttrrnnccppyy, ssttrrnnccaatt, ssttrrnnccmmpp, and iinnddeexx.
36:
37:
38: #include <stdio.h>
39: #define NNAMES 512
40: #define MAXLEN 60
41:
42:
43:
44: char *array[NNAMES];
45: char gname[MAXLEN], lname[MAXLEN];
46: extern int strncmp(), strcomp();
47: extern char *strcpy(), *strncpy(), *strncat(), *index();
48:
49:
50:
51: main(argc, argv)
52: int argc; char *argv[];
53: {
54: FILE *fp;
55: register int count, num;
56: register char *name, string[60], *cptr, *eptr;
57: unsigned glength, length;
58:
59:
60:
61:
62:
63:
64: COHERENT Lexicon Page 1
65:
66:
67:
68:
69: strncpy() String Function strncpy()
70:
71:
72:
73: if (--argc != 1) {
74: fprintf (stderr, "Usage: swap filename\n");
75: exit(1);
76: }
77:
78:
79:
80: if ((fp = fopen(argv[1], "r")) == NULL)
81: printf("Cannot open %s\n", argv[1]);
82: count = 0;
83:
84:
85:
86: while (fgets(string, 60, fp) != NULL) {
87: if ((cptr = index(string, '.')) != NULL) {
88: cptr++;
89: cptr++;
90: } else if ((cptr = index(string,' ')) != NULL)
91: cptr++;
92:
93:
94:
95: strcpy(lname, cptr);
96: eptr = index(lname, '\n');
97: *eptr = ',';
98:
99:
100:
101: strcat(lname," ");
102: glength = (unsigned)(strlen(string) - strlen(cptr));
103: strncpy(gname, string, glength);
104:
105:
106:
107: name = strncat(lname, gname, glength);
108: length = (unsigned)strlen(name);
109: array[count] = malloc(length + 1);
110:
111:
112:
113: strcpy(array[count],name);
114: count++;
115: }
116:
117:
118:
119: for (num = 0; num < count; num++)
120: printf("%s\n", array[num]);
121: exit(0);
122: }
123:
124:
125: ***** See Also *****
126:
127: strcpy(), string functions, string.h
128:
129:
130: COHERENT Lexicon Page 2
131:
132:
133:
134:
135: strncpy() String Function strncpy()
136:
137:
138:
139:
140: ***** Notes *****
141:
142: string1 must point to enough space to n bytes; otherwise, a por-
143: tion of the program or operating system may be overwritten.
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196: COHERENT Lexicon Page 3
197:
198:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.