Computer Science 210 Computer Organization Strings in C.

13
Computer Science 210 Computer Organization Strings in C

Transcript of Computer Science 210 Computer Organization Strings in C.

Page 1: Computer Science 210 Computer Organization Strings in C.

Computer Science 210Computer Organization

Strings in C

Page 2: Computer Science 210 Computer Organization Strings in C.

Representing Stringsprintf("Hi Ken!\n");

'\n''!''n''e''K'' ''i''H' nul

A string is a set of ASCII values that inhabit a sequence of bytes

A string should always end in a nul character (ASCII 0)

Many string functions use nul as a sentinel

Page 3: Computer Science 210 Computer Organization Strings in C.

The String “Type” and Variableschar *greeting = "Hi Ken!\n";

printf("%s", greeting);

'\n''!''n''e''K'' ''i''H' nul

The pointer to a char named greeting holds the address of the first byte

The standard string processing functions view strings as of type char*

greeting

Page 4: Computer Science 210 Computer Organization Strings in C.

The String “Type” and Variableschar *greeting = "Hi Ken!\n";

printf("%s", greeting);

'\n''!''n''e''K'' ''i''H' nul

greeting

GREETING .STRINGz "Hi Ken!\n"

LEA R0, GREETINGPUTS

Page 5: Computer Science 210 Computer Organization Strings in C.

View a String as an Array of charchar *greeting = "Hi Ken!\n";int i = 0;for (; greeting[i] != 0; i++) putchar(greeting[i]);

'\n''!''n''e''K'' ''i''H' nul

A string looks like an array in memory

So, we can use an index to access or modify a character in any cell

greeting

Page 6: Computer Science 210 Computer Organization Strings in C.

The string Library and strlen#include <string.h>

char *greeting = "Hi Ken!\n";int i = 0;for (; i < strlen(greeting); i++) putchar(greeting[i]);

'\n''!''n''e''K'' ''i''H' nul

The string library includes several common string functions (length, concatenation, comparison, etc.)

strlen is O(n), because it searches for the nul character

greeting

Page 7: Computer Science 210 Computer Organization Strings in C.

The string LibraryFunction What it does

int strlen(char *str) Returns the number of characters in the string, not including the nul character.

strcmp(char *str1, char *str2) Returns 0 if str1 equals str2, a negative integer if str1 < str2, or a positive integer if str1 > str2.

strcat(char *str1, char *str2) Adds the characters in str2 to the end of str1, overwriting its nul character.

strcpy (char *str1, char *str2) Copies the characters of str2 into the storage of str1. There must be enough storage!

You can pass either a char* or a char array to these functions

Page 8: Computer Science 210 Computer Organization Strings in C.

The ctype Library#include <string.h>#include <ctype.h>

char *greeting = "Hi Ken!\n";int i = 0;for (; i < strlen(greeting); i++) greeting[i] = toupper(greeting[i]);

'\n''!''N''E''K'' ''I''H' nul

greeting

The ctype library includes several common character functions (test for letter or digit, convert to uppercase, etc.)

Page 9: Computer Science 210 Computer Organization Strings in C.

String Input with scanf#include <stdio.h>

int main(){ char name[20]; printf("Enter your first name: "); scanf("%s", name); printf("%s\n", name);}

scanf stops at the first whitespace character and adds a nul character (works for one-word inputs)

Must pass scanf the storage, usually an array of char

Page 10: Computer Science 210 Computer Organization Strings in C.

String Input with gets#include <stdio.h>

int main(){ char name[20]; printf("Enter your first name: "); gets(name); printf("%s\n", name);}

gets stops at the first newline character, which is not included, and adds a nul character (works for multi-word inputs)

Must pass gets the storage, usually an array of char

Page 11: Computer Science 210 Computer Organization Strings in C.

Other Points about Strings

• Can be the element type of an array

• Can be the type of a field in a struct

Page 12: Computer Science 210 Computer Organization Strings in C.

Example: The Argument Vector

• The argument vector is an array of strings that are gathered up when a C program is run at the command prompt

• The first string is the name of the command

• The remaining strings are the arguments, if any

• The argument vector and its length are optional formal parameters of the main function

Page 13: Computer Science 210 Computer Organization Strings in C.

Print the Command Line Arguments/* Prints contents of the argument vector (the name of the program andany command-line arguments).*/

#include <stdio.h>

int main(int length, char *argVec[]){ int i; for (i = 0; i < length; i++) printf("Argument %d: %s\n", i, argVec[i]);}