초급 여기에. C에서 랩 함수를 작성하고 있는데,이 함수는 전달하는 문자열의 모든 단어가 내가 정의한 선의 크기보다 작 으면 OK입니다. 예 : 20 자 이후에 줄 바꿈하고 21 자 단어를 전달하려는 경우 줄 바꿈하지 않습니다. 실제로 수행 할 작업을하이픈을 랩 함수에 넣습니다.
내가 (정의 라인 크기 이상) 긴 단어를 전달하면 줄의 끝에 하이픈을 추가하고 다음 줄에에 수행하는 것입니다. 랩 함수를 사용하여 많은 웹 사이트를 조사하고 발견했지만 그 중 아무 것도 하이픈을 삽입하는 방법을 보여주지 못 했으므로 나를 도와 줄 수 있습니까? 하이픈을 삽입하는 예를 보여 주거나 올바른 방향으로 나를 가리켜 주시겠습니까? 미리 감사드립니다.
내 포장 기능 :
int wordwrap(char **string, int linesize)
{
char *head = *string;
char *buffer = malloc(strlen(head) + 1);
int offset = linesize;
int lastspace = 0;
int pos = 0;
while(head[pos] != '\0')
{
if(head[pos] == ' ')
{
lastspace = pos;
}
buffer[pos] = head[pos];
pos++;
if(pos == linesize)
{
if(lastspace != 0)
{
buffer[lastspace] = '\n';
linesize = lastspace + offset;
lastspace = 0;
}
else
{
//insert hyphen here?
}
}
}
*string = buffer;
return;
}
내 주요 기능 :
#include <stdio.h>
#include <string.h>
int main(void)
{
char *text = strdup("Hello there, this is a really long string and I do not like it. So please wrap it at 20 characters and do not forget to insert hyphen when appropriate.");
wordwrap(&text, 20);
printf("\nThis is my modified string:\n'%s'\n", text);
return 0;
}
입력 해 주셔서 감사합니다. 나는 네가 그 줄 끝에 가서 그 말을 어기면 안된다는 것을 이해한다. 나는 긴 단어를 어기는 법을 연구했지만, '하이픈'과 '돌아 오는'문자는 그 긴 단어의 두 문자를 대체합니다. 나는 realloc을 사용하는 것이 효과가있을 것이라고 생각하지만 매우 긴 문자열을 입력하면 매우 효율적이지는 않습니다. 당신이 생각할 수있는 다른 방법이 있습니까? 감사. –