对不起,我的英语不好,但是我确实需要帮助解决我的问题。实际上,我不了解如何在此处进行附件。我的老师给我们提供了一个任务程序,该程序将写入文件中的每个单词,其中包含我们将从控制台接受的字符。例如,就像我们在控制台中输入“ 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;
}
答案 0 :(得分:1)
注意:为避免使用“神奇”数字,请使用#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;
}