Как отделить слово это .txt.файлы - PullRequest
0 голосов
/ 19 мая 2019

Извините за мой плохой английский, но мне действительно нужна помощь с моей проблемой.На самом деле, я не понимаю, как сделать вложения здесь.Мой учитель дал нам задание создать программу, которая будет записывать каждое слово из файла, содержащего символ, который мы будем принимать из консоли.Например, как мы дали ввод 'x' в консоли, и программа r ответит:

x  
\--------------------------------  
xu  
box  
dux  
exl  
fax  
fix  
fox  
kux  
lex  
lux  
mix  
pax  
pix  
sax  
sex  
....  

Но я даже не понимаю, как сортировать слова в этом файле .txt.Я не понимаю, почему моя программа пишет некоторые странные символы и только иногда правильные слова. Пожалуйста, помогите написать этот код. Вы можете загрузить файл для работы отсюда, но используйте только slobvnik_en: https://elearning.tul.cz/mod/resource/view.php?id=177071

Спасибо за вашу помощь.

int main(int argc, char *argv[])
 {
    FILE *read=NULL;
    int i,j=0;
    char *words[101][101];

    if(read=fopen("slovnik_en.txt","r")==NULL)
    {
        printf("ERROR FILE");
    }

    for(i=0;i<100;i++)
    {
        for(j=0;j<100;j++)
        {
            words[i][j] = 0;
            printf("%c", words[i][j]);
        }
    }
    printf("reading\n");

    for(i=0;i<100;i++)
    {
        for(j=0;j<100;j++)
        {
            fscanf(read,"%c",&words[i][j]);
        }
    }

    for(i=0;i<100;i++)
    {
        for (j = 0; j <100; j++)
        {

            printf("%c",words[i][j]);

        }
    }

    return 0;
}

1 Ответ

1 голос
/ 19 мая 2019

Примечание: чтобы избежать «магических» чисел, используйте операторы #define, чтобы дать этим «магическим» числам осмысленные имена.

Применяя вышеизложенное и комментарии к вопросу, вы получите следующий исходный код:

#include <stdio.h>
#include <stdlib.h>

#define MAX_WORDS 101
#define MAX_WORD_LEN 101


int main( void )
{
    char words[ MAX_WORDS ][ MAX_WORD_LEN ] = {'\0'};

    FILE *fp = fopen( "untitled.c", "r" );
    if( !fp )
    {
        perror( "fopen to read 'slovnix_in.txt' failed" );
        exit( EXIT_FAILURE );
    }

    printf("reading\n");

    for(int i=0; i<100; i++ )
    {
        if( fscanf( fp, "%100s",  words[i] ) != 1 )
        {
            break;
        }
    }

    for( int i=0; i<100; i++ )
    {
        if( words[i] )
        {
            printf( "%s", words[i] );
            puts( "" );
        }

        else
        {
            break;
        }
    }

    return 0;
}

затем запуск его с текущим исходным файлом untitled.c приводит к:

reading
#include
<stdio.h>
#include
<stdlib.h>
#define
MAX_WORDS
101
#define
MAX_WORD_LEN
101
int
main(
void
)
{
char
words[
MAX_WORDS
][
MAX_WORD_LEN
]
=
{'\0'};
FILE
*fp
=
fopen(
"untitled.c",
"r"
);
if(
!fp
)
{
perror(
"fopen
to
read
'slovnix_in.txt'
failed"
);
exit(
EXIT_FAILURE
);
}
printf("reading\n");
for(int
i=0;
i<MAX_WORDS;
i++
)
{
if(
fscanf(
fp,
"%100s",
words[i]
)
!=
1
)
{
break;
}
}
for(
int
i=0;
i<MAX_WORDS;
i++
)
{
if(
words[i]
)
{
printf(
"%s",
words[i]
);
puts(
""
);
}
else
{
break;
}
}
return
0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...