나는 텍스트 문서에서 각 고유 용어의 발생 횟수를 세는 다음 코드를 가지고있다. 내가 제대로 '\0'
C 문자열을 올바르게 null로 종료하는 방법은 무엇입니까?
#include <stdio.h>
#include <string.h>
int main()
{
int c;
FILE *file;
int NUMBER_OF_WORDS = 100;
int MAX_WORD_LENGTH = 30;
char uniqueWords[NUMBER_OF_WORDS][MAX_WORD_LENGTH+1];
int wordCount[NUMBER_OF_WORDS];
int uniqueWordIndex =0;
char tempWord[MAX_WORD_LENGTH+1];
int tempWordIndex = 0;
file = fopen("sample.txt", "r");
if (file) {
while ((c = getc(file)) != EOF && uniqueWordIndex < 100){
if(isalpha(c)){
tempWord[tempWordIndex] = c;
tempWordIndex++;
}else if ((c == ' ' || c == '\n') && strlen(tempWord) > 0 ) {
tempWord[tempWordIndex] = '\0';
int k = 0;
int newUnique = 1;
for (k=0; k<NUMBER_OF_WORDS; k++){
if (strcmp (tempWord, uniqueWords[k]) == 0){
wordCount[k]++;
newUnique = 0;
break;
}
}
if (newUnique){
int i=0;
wordCount[uniqueWordIndex] = 1;
for (i=0; i<strlen(tempWord); i++)
uniqueWords[uniqueWordIndex][i] = tempWord[i];
uniqueWords[uniqueWordIndex][i] = '\0';
uniqueWordIndex++;
}
tempWordIndex = 0;
}
}
int i =0;
for (i =0; i< NUMBER_OF_WORDS; i++){
int k = 0;
for (k =0; k< strlen(uniqueWords[i]); k++)
printf("%c",uniqueWords[i][k]);
printf(" %d\n", wordCount[i]);
}
fclose(file);
}
return(0);
}
이 같은 엉뚱한 출력 결과 상관 없음 구문 오류가 각 C - 문자열을 종료 생각? 당신이 또는 wordCount
에 NUMBER_OF_WORDS
항목이 보장되지 않습니다처럼
term 2
something 5
reading 1
level 1
!J<8F><FF>^? 0
<C8>B~8<91>^? 0
이 출력이 주어진 코드와 일치하지 않습니다. 다른 정보가 있습니까? –
'gdb'를 통해 코드를 실행 했습니까? 그렇지 않다면 왜 안 되겠습니까? 이와 같은 문제는 디버거가 무엇을 위해 만들어 졌는지에 대한 것입니다 ... – Will
왜'printf','strlen'과'strcmp'를 사용할 수 있지만'scanf' 나'strcpy'를 사용할 수 없습니까? 이것은 나에게 직업 *을위한 잘못된 도구를 사용하는 예와 같습니다. – Sebivor