CSE 210: Computer Architecture Lecture 4: Introduction to MIPS
Computer Science 210 Computer Organization Strings in C.
-
Upload
joel-mccormick -
Category
Documents
-
view
213 -
download
0
Transcript of Computer Science 210 Computer Organization Strings in C.
Computer Science 210Computer 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
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
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
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
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
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
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.)
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
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
Other Points about Strings
• Can be the element type of an array
• Can be the type of a field in a struct
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
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]);}