% cat -n string_test.c
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 void print_string1(char []);
5 void print_string2(char *);
6 int main() {
7 /* equiv ways to declare string "Neal" */
8 char s[5];
9 char t[] = "Neal";
10 char u[] = {'N', 'e', 'a', 'l', '\0'};
11 /* here is the address of a string: */
12 char *p; char *q; char *r;
13
14 s[0] = 'N'; s[1] = 'e'; s[2] = 'a';
15 s[3] = 'l'; s[4] = '\0';
16 printf("Three strings:%s,%s,%s\n",
17 s, t, u);
18 p = s; q = &s[0];
19 printf("Pointer to char:%s,%s\n", p, q);
20 /* passing param, all print: "Neal" */
21 printf("Six Neals:");
22 print_string1(s);
23 print_string1(p);
24 print_string1(q);
25 print_string2(s);
26 print_string2(p);
27 print_string2(q);
28 printf("\n");
29 /* printing characters */
30 printf("Four characters (1):%c%c%c%c\n",
31 s[0], s[1], s[2], s[3]);
32 printf("Four characters (2):%c%c%c%c\n",
33 p[0], p[1], p[2], p[3]);
34 printf("Four characters (3):%c%c%c%c\n",
35 *s, *(s+1), *(s+2), *(s+3));
36 printf("Four characters (4):%c%c%c%c\n",
37 *p, *(p+1), *(p+2), *(p+3));
38 printf("Four characters (5):");
39 while (*p) /* or while (*p != '\0') */
40 printf("%c", *(p++)); /* or *p++ */
41 printf("\n");
42 r = (char *) malloc(strlen(s) + 1);
43 strcpy(r, s);
44 printf("New string:%s\n", r);
45 return 0;
46 }
47 void print_string1(char a[]) {
48 printf("%s", a);
49 }
50 void print_string2(char *a) {
51 printf("%s", a);
52 }
|
% cc -o string_test string_test.c
% string_test
Three strings:Neal,Neal,Neal
Pointer to char:Neal,Neal
Six Neals:NealNealNealNealNealNeal
Four characters (1):Neal
Four characters (2):Neal
Four characters (3):Neal
Four characters (4):Neal
Four characters (5):Neal
New string:Neal
|