저는 C에서 약간 녹슬 었습니다. 나는 사용자 입력을받는 프로그램을 만들 것을 요구하는 학교 과제를했습니다. 문자 수가 50보다 크면 아무 것도 출력하지 않고 다시 설정하십시오. 종료하면 수를 인쇄해서는 안됩니다 (이 경우 4).C : 특정 입력이 삽입 될 때까지 문자 수를 계산하십시오.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{ /*Start of main*/
printf("Type any word you'd like <= 50 characters.\nType quit to exit:\n");
char word[50];
int wordLength = 0;
while (strcmp(word, "quit") != 0)
{/*open of while loop (strcmp ... != 0)*/
scanf("%s\n", word);
wordLength = strlen(word);
if (wordLength > 50)
{
printf("Try again, >= 50 characters!:\n");
scanf("%s", word);
wordLength = strlen(word);
}
printf("%d\n", wordLength);
}/*End of while loop (strcmp... != 0)*/
return 0;
}/*End of main*/
나는 즉시 제출 단어 다음 길이를 얻이 수없는 것 :
이것은 내가 지금까지있는 것입니다. 그것은 어색한 얻을 것 같습니다. 새 단어를 입력 한 후 마지막 제출 된 단어의 번호를 표시합니다. printf를 어디에 두어도 상관 없습니다. 시간이 걸립니다.
누군가가 내게 왜 그렇게 느린 지 설명 할 수 있고, 더 빨리 구현할 수있는 방법을 제안 할 수 있습니까? 이것은 학교 임무이며, 직접적인 답변을 공유하지 말고, 내가 생각해야하는 방식으로 안내해주십시오. :)
저는 이것이 지연으로 비효율적 인 코딩이라고 생각하고 있습니다.
당신은 모두 생명의 은인입니다! 안 하나 당신이 줄 바꿈을 보려면 여기를 를 기대 -
[C-FAQ 12.17 (http://c-faq.com/stdio/scanfhang.html) –
어레이 '숯 워드 [50] 코드가 수행하는 첫 번째 작업은 처음 4 바이트를 비교하므로 초기화해야합니다. 제안 : 'char word [50] = {'\ 0 '}. 그러나 50 바이트의 입력을 허용하려면 문자열 종료 바이트 ' – user3629249
의 단어 길이가 50을 초과 할 수 없도록하려면 char 단어 [50]이 char word [51]'여야합니다. 단어 [] 배열이 오버런되지 않은 경우 이는 정의되지 않은 동작이며 seg fault 이벤트로 이어질 수 있습니다. – user3629249