Artikelverzeichnis
1. Speicherung von Zeichenfolgen
-
Die gespeicherte Zeichenfolge muss die Endmarkierung „\0“ haben.
-
Die Länge des Arrays, in dem die Zeichenfolge gespeichert ist, beträgt mindestens die effektive Länge der Zeichenfolge + 1
Lesen Sie den folgenden Code sorgfältig durch, um ihn zu verstehen:
#include<stdio.h>
int main()
{
char str1[6] = {
'c', 'h', 'i', 'n', 'a' };
printf("%c\n", str1[5]); // 输出空字符
printf("%d\n", str1[5] == '\0'); // 判断是否含有空字符
char str2[5] = {
'c', 'h', 'i', 'n', 'a' };
printf("%c\n", str2[5]); // 错误输出
printf("%d\n", str2[5] == '\0'); // 判断是否含有空字符
char str3[6] = {
'c', 'h', 'i', 'n', 'a', '\0' };
printf("%c\n", str3[5]); // 输出空字符
printf("%d\n", str3[5] == '\0'); // 判断是否含有空字符
char str4[6] = {
"china" };
printf("%c\n", str4[5]); // 输出空字符
printf("%d\n", str4[5] == '\0'); // 判断是否含有空字符
char str5[5] = {
"china" };
printf("%c\n", str5[5]); // 错误输出
printf("%d\n", str5[5] == '\0'); // 判断是否含有空字符
char str6[6] = "china";
printf("%c\n", str6[5]); // 输出空字符
printf("%d\n", str6[5] == '\0'); // 判断是否含有空字符
return 0;
}
Ausgabeergebnis:
Entsprechend dem Ausgabeergebnis:
- 1 3 4 6 ist gleichwertig und richtig
- 2 5 ist falsch
2. String-Eingabe und -Ausgabe
1. Vergleich mehrerer Eingabe- und Ausgabezeichenfolgen
Funktion | Format | der Unterschied |
---|---|---|
scanf() | scanf("%s", Name des Zeichenarrays) | Sie können keine Zeichenfolge mit Leerzeichen eingeben. Sie können mehrere Formatsteuerzeichen %s verwenden, um mehrere Zeichenfolgen einzugeben. Wenn am Ende der Eingabe ein Leerzeichen auftritt, müssen Sie die Zeichenfolgenendemarkierung „\0“ manuell hinzufügen. |
bekommt() | get(Name des Zeichenarrays) | Es kann nur eine Zeichenfolge eingegeben werden. Die Eingabe endet, wenn ein Wagenrücklaufzeichen angetroffen wird, und das Wagenrücklaufzeichen „\n“ wird automatisch in „\0“ umgewandelt. |
printf() | printf("%s", Name des Zeichenarrays) | Eine printf()-Funktion kann mehrere Zeichenfolgen ausgeben, ohne dass Zeilen nach der Ausgabe automatisch umbrochen werden. |
puts() | puts(Name des Zeichenarrays) | Eine puts()-Funktion kann nur eine Zeichenfolge ausgeben und wird nach der Ausgabe automatisch umbrochen. |
2. Zeichenweise Eingabe und Ausgabe
- Verwenden Sie die Standard-Eingabe- und Ausgabefunktionen scanf() und printf() mit dem Formatdeskriptor %c
- Es muss eine feste Anzahl von Zeichen eingegeben werden
#include<stdio.h>
int main()
{
int i;
char str[11];
printf("请输入十个字符:");
for (i = 0; i < 10; i++)
scanf("%c", &str[i]);
str[i] = '\0';
i = 0;
while (str[i] != '\0')
{
printf("%c", str[i]);
i++;
}
return 0;
}
- Verwenden Sie die Funktionen getchar() und putchar(), um Zeichenfolgen einzugeben und auszugeben
- Geben Sie einfach die Anzahl der Zeichen innerhalb der angegebenen Grenze ein und beenden Sie den Vorgang mit der Eingabe des Wagenrücklaufzeichens.
#include<stdio.h>
int main()
{
int i=0;
char str[80];
printf("请输入一串字符:");
while ((str[i] = getchar()) != '\n')
i++;
str[i] = '\0';
for (i = 0; str[i] != '\0'; i++)
printf("%c", str[i]);
return 0;
}
3. Gesamteingabe der Zeichenfolge
- Verwenden Sie die Standardeingabefunktion scanf() mit dem Formatdeskriptor %s
- Aufrufformat: scanf("%s", Name des Zeichenarrays);
- Wenn Sie das Formatsteuerzeichen %s zur Eingabe einer Zeichenfolge verwenden, fügt die Funktion scanf() automatisch „\0“ nach der Zeichenfolge hinzu.
#include<stdio.h>
int main()
{
char str[10];
printf("请输入一串字符:");
scanf("%s", str);//不用& str就是地址
printf("%s\n", str);
return 0;
}
Wenn Sie eine Zeichenfolge eingeben müssen, die Leerzeichen in der Mitte enthält, müssen Sie die Funktion scanf() mit mehreren Eingabeparametern verwenden, um der Eingabe zu entsprechen.
#include<stdio.h>
int main()
{
char str1[5],str2[5], str3[5];
scanf("%s%s%s", str1, str2, str3);
printf("%s %s %s\n", str1, str2, str3);
return 0;
}
Ergebnis:
how are you
how are you
- Verwenden Sie die Funktion gets(), um eine vollständige Zeichenfolge einzugeben
- Aufrufformat: gets(character array name);
- Diese Funktion kann eine über die Tastatur eingegebene Zeichenzeile in Form einer Zeichenfolge in einem Zeichenarray speichern.
- Bei der Eingabe einer Zeichenzeile wird die Eingabetaste als Endzeichen verwendet und das Wagenrücklaufzeichen „\n“ wird automatisch in „\0“ als Endmarke der Zeichenfolge umgewandelt.
#include<stdio.h>
int main()
{
char str[50];
gets(str);
printf("%s\n", str);
return 0;
}
Ergebnis:
how are you
how are you
4. String-Ausgabe
- Verwenden Sie die Standardausgabefunktion printf() mit dem Formatdeskriptor %s
- Aufrufformat: printf("%s", Name des Zeichenarrays);
#include<stdio.h>
int main()
{
char str1[]="How are you?";
char str2[] = "I am fine.Thank you.";
printf("%s\n%s\n", str1,str2);
return 0;
}
Ergebnis:
How are you?
I am fine.Thank you.
- Verwenden Sie die Funktion puts(), um einen vollständigen String auszugeben
- Aufrufformat: puts(character array name);
- Diese Funktion kann einen String (eine Zeichenfolge, die mit „\0“ endet) auf dem Bildschirm ausgeben
- Wird nach der Ausgabe automatisch umbrochen
#include<stdio.h>
int main()
{
char str[]="How are you?";
puts(str);
printf("I am fine.Thank you.");
return 0;
}
Ergebnis:
How are you?
I am fine.Thank you.//可看出换了行