gpt4 book ai didi

c - 用C语言解析单词;翻译程序

转载 作者:行者123 更新时间:2023-11-30 14:19:56 25 4
gpt4 key购买 nike

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

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

--谢谢

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 循环,这样我就可以看到这些单词(出于好奇)并且它成功了。文件字符串的格式为 (英语单词),(西类牙语单词)。

最佳答案

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

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

我建议这样做:

size_t count = 0;
for (int i = 0; i < sizeof(readFile) / sizeof(readFile[0]) &&
fgets(readFile[i], sizeof(readFile[i]), fp); i++, count++)
{
}

这将确保您读取的内容不会超出您可以存储的范围,并自动读入数组中正确的“行”。循环结束后,count 将包含您读取的行数。

关于c - 用C语言解析单词;翻译程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15960376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com