0 일반적인 실수
없음 언어 문자열 데이터 형베이스 C
C 언어가있다
<string.h>
그래서 우리는 C 언어는 이런 문자열을 가지고 부여,이 헤더 파일을 문자열 변수는 다음의 형태로 선언하는string aString;
컴파일에 실패 . 원래 C 언어들이있다 하지 문자열 이 입력되므로 문자열 숯불에 의해 배열되어 저장 및<string.h>
의 전체 또한이 헤더 파일 선언 함수 원형 문자 배열에 동작 온갖 . 는 C ++ 문자열 클래스 등장까지 (I 클래스가 아닌 형태를 의미한다).문자열은 문자의 배열에 의해 정의되는 경우, 기본은 마지막 배열의 요소를 더한 '\ 0'의 끝을 표시 할 것
문자 배열은 보통 문자열 참조 구별하는 경우에는 다음과 같은 코드로 제 점이 지정된
//此string1后面不会有'\0'标志,就是一般的字符数组
char string1[3]={'a','b','c'};
//string2为字符串形式,结尾有\0标志,长度为4
char string2[4]="abc"
참고 : 여기에 문자열 2의 길이가 제한 될 수 있으며, 기본값은 생략 컴파일러를 자동으로 필요한 인위적으로 설정 한 길이 경우 필요 계정 '\ 0'문자를 고려하기 위해, 길이를 설정합니다
문자 배열의 길이가 충분하지 않으면, 컴파일러 오류
D : \ otherworkspace \ devcppworkspace \ DS \ DS-C2 \ demo5.cpp [오류] 문자의 배열 초기화 문자열이 너무 긴 [-fpermissive]
관계 배열 이름과 포인터
다음 샘플 코드는 다음과 같습니다
#include<stdio.h> int main(){ int i; char string[]="abc"; for(i = 0;i<4;i++){ printf("%p\t",string+i); printf("%p\t",&string[i]); printf("%c\n",string[i]); } return 0; }
인쇄 결과
000000000062FE10 000000000062FE10 a 000000000062FE11 000000000062FE11 b 000000000062FE12 000000000062FE12 c 000000000062FE13 000000000062FE13
뷰의 코드 포인트를 실행 한 결과에 의하면, 문자열 [], 자동 포인터의 종류에 따라 배열 이름 [0]이, 우리가 직접 산술 포인터 수 실제로 인덱스의 첫번째 요소를 가리키는 포인터이다 운동의 길이에 해당하는, 예를 들어, 여기에 문자 포인터, 1 바이트, 다음 문자열 ++, 커서가 자동으로 바이트를 다시 이동합니다.
문자열 1.0 읽기
#include <stdio.h>
int main()
{
char name[20];
printf("Enter name: ");
scanf("%s", name);
printf("Your name is %s.", name);
return 0;
}
결과 :
Enter name: Dennis Ritchie
Your name is Dennis.
scanf()
기능이 문자 순서를 읽고, 공백 (공백, 줄 바꿈, 탭 등)에 직면했을 때 읽기 중지합니다.
그래서 당신은 어떻게 읽을 수 있습니까?
#include <stdio.h>
int main()
{
char name[30];
printf("Enter name: ");
fgets(name, sizeof(name), stdin); // read string
printf("Name: ");
puts(name); // display string
return 0;
}
수출
Enter name: Tom Hanks
Name: Tom Hanks
여기서는 단말기로부터 문자열을 읽을 수는 fgets () 함수를 사용한다. 는 fgets (표준 입력 이름를 sizeof (명)) 결과를 sizeof (이름) (30)이다. 따라서, 우리는 즉 입력,로 30 자까지 입력 할 수 있습니다, 이름 문자열의 크기는 다른 길이로 지정할 수 있습니다. 문자열을 인쇄하기 위해, 우리는, 당신은 또한 직접의 printf () 함수 인쇄를 사용할 수있는 풋 (이름)을 사용합니다.
참고 : 도착 () 함수는 사용자 입력을받을 수 있습니다. 그러나, C 표준에서 제거되었습니다. 이 가져 오기 때문에 () 길이의 문자를 입력 할 수 있습니다. 따라서, 버퍼 오버 플로우가 존재할 수있다.
1.1 가져 오기 문자열 길이
샘플 코드
//求字符串长度
#include <string.h>
#include <stdio.h>
int main(void)
{
const char str[] = "How many characters does this string contain?";
printf("without null character: %zu\n", strlen(str));
printf("with null character: %zu\n", sizeof(str) );
return 0;
}
산출
without null character: 45
with null character: 46