首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析C语言中的单词;翻译程序

解析C语言中的单词;翻译程序
EN

Stack Overflow用户
提问于 2013-04-12 07:05:05
回答 1查看 349关注 0票数 0

我正在开发一个程序,将从用户(英语)翻译成西班牙语字符串。对于作业,我得到了一个文件,其中包含一个包含100个单词的列表以及对应的西班牙语单词。我已经成功地打开了该文件,并用一个二维数组将其输入到字符串中。

我遇到的困难是解析单词,这样我就可以找到与给定单词等效的版本;任何没有给出的单词都应该用星号(*)替换。关于如何从用户输入的字符串中解析单词,有什么想法吗?下面是为节省时间而编写的源代码片段。

--谢谢

代码语言:javascript
复制
char readFile[100][25];

fp = fopen("words.dat", "r");

if (fp == NULL){
   printf ("File failed to load\n");
}

//This is how I stored the file into the two dimensional string.
while (fgets(readFile, 100, fp)){
   x++;
}

printf ("User please input string\n");
gets (input);

这就是我所能做的。我注释掉了输出单词的for循环,这样我就可以看到单词(出于好奇心),它是成功的。文件字符串的格式为(英语单词),(西班牙语单词)。

EN

回答 1

Stack Overflow用户

发布于 2013-04-12 07:11:37

首先,您声明的数组是由25个字符组成的100个数组。如果我们谈到“行”,这意味着您有100行,每行可以是24个字符(请记住,我们需要一个额外的结束'\0'字符)。如果您想要每行99个字符的25行,请交换大小的位置。

其次,您一遍又一遍地重写数组的相同字节。由于每个子数组实际上只有25个字符,因此可以使用该fgets调用覆盖这些数组中的最多四个。

我建议这样做:

代码语言:javascript
复制
size_t count = 0;
for (int i = 0; i < sizeof(readFile) / sizeof(readFile[0]) &&
                fgets(readFile[i], sizeof(readFile[i]), fp); i++, count++)
{
}

这将确保您不会读取超过您可以存储的内容,并自动读取数组中正确的“行”。在循环之后,count将包含您读取的行数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15960376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档