[C언어] 배열 지식 요약(2) - 문자열의 입출력

1. 문자열 저장


  • 저장된 문자열에는 끝 표시 '\0'이 있어야 합니다.

  • 문자열을 저장하는 배열의 길이는 최소한 문자열의 유효 길이 + 1입니다.


이해하려면 아래 코드를 주의 깊게 읽어보세요.

#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;
}

출력 결과:
여기에 이미지 설명을 삽입하세요.
출력 결과에 따르면:


  • 1 3 4 6은 동일하고 정확합니다.
  • 2 5 틀렸어

2. 문자열 입력 및 출력

1. 여러 입력 및 출력 문자열 비교

기능 체재 차이점
스캔프() scanf("%s", 문자 배열 이름) 공백이 포함된 문자열을 입력할 수 없습니다. 여러 형식 제어 문자 %s을(를) 사용하여 여러 문자열을 입력할 수 있습니다. 입력을 끝내기 위해 공백이 있는 경우 문자열 끝 표시 '\0'을 수동으로 추가해야 합니다.
가져옵니다() get(문자 배열 이름) 문자열은 하나만 입력할 수 있으며, 캐리지 리턴 문자를 만나면 입력이 종료되고 캐리지 리턴 문자 '\n'이 자동으로 '\0'으로 변환됩니다.
프린트프() printf("%s", 문자 배열 이름) printf() 함수는 출력 후 줄을 자동으로 줄 바꿈하지 않고 여러 문자열을 출력할 수 있습니다.
넣다() puts(문자 배열 이름) puts() 함수는 문자열만 출력할 수 있으며 출력 후에 자동으로 래핑됩니다.

2. 문자별 입력 및 출력


  • %c 형식 설명자와 함께 표준 입력 및 출력 함수 scanf() 및 printf()를 사용합니다.
  • 고정된 수의 문자를 입력해야 합니다.

#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;
}

  • getchar() 및 putchar() 함수를 사용하여 문자열을 입력 및 출력합니다.
  • 지정된 제한 내에서 문자 수를 입력하고 캐리지 리턴 문자를 입력하면 끝납니다.

#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. 문자열 전체 입력


  • %s 형식 설명자와 함께 표준 입력 함수 scanf()를 사용하십시오.
  • 호출 형식: scanf("%s", 문자 배열 이름);
  • %s 형식 제어 문자를 사용하여 문자열을 입력할 때 scanf() 함수는 자동으로 문자열 뒤에 '\0'을 추가합니다.

#include<stdio.h>
int main()
{
    
    
	char str[10];
	printf("请输入一串字符:");
	scanf("%s", str);//不用& str就是地址
	printf("%s\n", str);
	return 0;
}

중간에 공백이 포함된 문자열을 입력해야 하는 경우, 입력과 일치하도록 여러 입력 매개변수와 함께 scanf() 함수를 사용해야 합니다.


#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;
}

결과:

how are you
how are you

  • 완전한 문자열을 입력하려면 gets() 함수를 사용하십시오.
  • 호출 형식: gets(문자 배열 이름);
  • 이 함수는 키보드로 입력한 문자열을 문자열 형태의 문자 배열에 저장할 수 있습니다.
  • 한 줄의 문자를 입력할 때 Enter 키는 끝 문자로 사용되며, 캐리지 리턴 문자 '\n'은 자동으로 문자열 끝 표시인 '\0'으로 변환됩니다.

#include<stdio.h>
int main()
{
    
    
	char str[50];
	gets(str);
	printf("%s\n", str);
	return 0;
}

결과:

how are you
how are you

4. 문자열 출력


  • %s 형식 설명자와 함께 표준 출력 함수 printf()를 사용하십시오.
  • 호출 형식: printf("%s", 문자 배열 이름);

#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;
}

결과:

How are you?
I am fine.Thank you.

  • 완전한 문자열을 출력하려면 puts() 함수를 사용하십시오.
  • 호출 형식: puts(문자 배열 이름);
  • 이 함수는 문자열('\0'으로 끝나는 일련의 문자)을 화면에 출력할 수 있습니다.
  • 출력 후 자동으로 래핑됩니다.

#include<stdio.h>
int main()
{
    
    
	char str[]="How are you?";
	puts(str);
	printf("I am fine.Thank you.");
	return 0;
}

결과:

How are you?
I am fine.Thank you.//可看出换了行

추천

출처blog.csdn.net/m0_74102736/article/details/130311394