我正在开发一个程序,将从用户(英语)翻译成西班牙语字符串。对于作业,我得到了一个文件,其中包含一个包含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循环,这样我就可以看到单词(出于好奇心),它是成功的。文件字符串的格式为(英语单词),(西班牙语单词)。
发布于 2013-04-12 07:11:37
首先,您声明的数组是由25个字符组成的100个数组。如果我们谈到“行”,这意味着您有100行,每行可以是24个字符(请记住,我们需要一个额外的结束'\0'字符)。如果您想要每行99个字符的25行,请交换大小的位置。
其次,您一遍又一遍地重写数组的相同字节。由于每个子数组实际上只有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将包含您读取的行数。
https://stackoverflow.com/questions/15960376
复制相似问题