대체로 scanf() 함수를 사용하는 데 많은 문제가 생긴 후에 전체 문자열을 읽는 대안을 찾기로 결정했습니다. 전체 문자열은 공백과 숫자 등이 섞인 단어를 의미합니다. \ n이 발견 될 때까지). 나는 stackoverflow에서 흥미로운 비트의 코드를 발견했다. 이 코드를 좀 더 다이나믹하게 변경 했으므로 키보드에서 char 입력 후에 memmory를 할당하려고했습니다. 내가 작동하지만, 오직 인수로 char **a
와 함께있어, main()에서 나는 이것을 read(&w);
이라고 부른다. 내 생각은 변수를 선언하지 않고도 사용할 수 있도록 인자없는 함수를 만드는 것이다. char *w
내가 문자열을 읽을 때마다. 여기에 내가 가진 코드의 : 사전대체 방법 scanf()
char *read2() {
int i = 0;
char **a = NULL;
while (1) {
*a = (char *)realloc(*a, (i + 1) * sizeof(char)) // Error here
scanf("%c", &(*(*a + i)));
if (*(*a + i) == '\n') { break; }
else { i++; }
}
*(*a + i) = '\0';
return *a;}
감사 : 이제
char *read(char **a) {
int i = 0;
while (1) {
*a = (char *)realloc(*a, (i + 1) * sizeof(char));
scanf("%c", &(*(*a + i)));
if (*(*a+i) == '\n')
break;
else
i++;
}
*(*a+i) = '\0';
return *a;}
내가 인수를 취하지이 기능을 수정하기 위해 노력하고있어하지만 쓰기를 얻고있다가/액세스 위반 읽기 오류
정확히 무엇이 문제입니까? –
POSIX에는 원하는 것을 수행하는'getline()'함수가 있습니다. 그것을 사용할 수 있습니까? – Barmar
'fgets' 또는'getline'의 1000 번째 버전을 다시 발명하려고하십니까? ''read'라는 이름을 사용하는 것은 매우 나쁜 생각입니다. 왜냐하면 그것은 일반적으로 플랫폼 시스템 라이브러리에 의해 이미 정의되어 있기 때문입니다. – Olaf