주어진 파일에서 한 줄씩 읽습니다. arrayOfAllLines
줄만 저장합니다. 두 줄이있는 경우 의미가 있습니다. 파일의 동일한 줄을 하나만 저장하려고합니다.배열은 확장되지 않고 변경 요소가 하나만 유지됩니다
배열을 정의했습니다 : arrayOfAllLines
고유 한 행만 포함하도록되어 있습니다. 나는 newLine
이라는 포인터를 사용하여 행을 읽고 각 반복의 값을 내 배열의 동일한 지점까지 이미 저장된 행과 비교합니다.
문제는 선을 추가하는 대신 이전 반복에서 저장 한 선을 무시하는 것입니다. 의미, 당신이 내 코드를 실행하는 경우 줄을보십시오 : printf("%s\n", arrayOfAllLines[0])
- 그 값은 모든 반복을 변경하고 그것을 영구적으로 설정하고 싶습니다. 당신은 모든 동안() 반복에서 areLinesIdentical을 재설정해야
int main(int argc, char *argv[])
{
FILE *file = fopen(argv[1], "r");
const char *arrayOfAllLines[1000];
char newLine[128];
int areLinesIdentical = 0;
int indexOfCurrentLine = 0;
int i = 0;
while (fgets(newLine, sizeof newLine, file) != NULL) {
for (i = 0; i < indexOfCurrentLine; i++) {
if (strcmp(newLine, arrayOfAllLines[i]) == 0) {
areLinesIdentical = 1;
break;
}
}
if (areLinesIdentical == 0) {
arrayOfAllLines[indexOfCurrentLine] = newLine;
indexOfCurrentLine++;
}
areLinesIdentical = 0;
printf("%s\n", arrayOfAllLines[0]);
}
return 0;
}
넵. 업데이트를 볼 수 있습니다. – user3045065
문제가 발견되었습니다. arr [i] = strdup (line) 사용 – Anonymous