如何在C中从文本文件中查找和提取特定单词?
这个函数很大,但我从这个函数中提取了一些代码,我有一个问题,如何从文本文件中找到特定的名称?我不确定如何在C中从文本文件中查找和提取特定单词?,c,function,C,Function,这个函数很大,但我从这个函数中提取了一些代码,我有一个问题,如何从文本文件中找到特定的名称?我不确定 for (option = 1; option <= sizeof(listing)/sizeof(char *); ++option) printf("%d. Your %s:\n", option, listing[option-1]); fputs("Select your choice to update: ", stdout); if ((scanf("%d", &a
for (option = 1; option <= sizeof(listing)/sizeof(char *); ++option)
printf("%d. Your %s:\n", option, listing[option-1]);
fputs("Select your choice to update: ", stdout);
if ((scanf("%d", &option) != 1) || (option < 1) || (option > sizeof(listing)/sizeof(char *)))
{
puts("invalid choice");
fclose(fr3);
return -1;
}
int one_by_one;
printf("Enter new name to update: ");
scanf("%s",&updated_name);
for (one_by_one=0; file_text[one_by_one] != '\0'; one_by_one++)
{
while(file_text[one_by_one] == updated_name)
{
one_by_one++;
if (one_by_one == strlen(updated_name))
{
found=1;
printf("It is found: \n");
break;
}
}
}
如果您试图搜索和更新任何名称,您应该使用fgets从源文件中获取一行并存储在临时字符数组中。然后,您可以使用字符串函数(如strstrstr函数)在该行中查找名称,如果找到,则替换它,否则继续 您可以参考此部分以获得帮助。关于:
scanf("%s",&updated_name);
while(file_text[one_by_one] == updated_name)
这将允许用户溢出缓冲区:更新的\u名称。建议包含比更新的_name[]的长度小1的最大字符修饰符,因为%s总是在输入后附加NUL字节。这将避免缓冲区溢出和由此产生的未定义行为
关于:
scanf("%s",&updated_name);
while(file_text[one_by_one] == updated_name)
字符串不能与C运算符进行比较。建议使用strcmp。此外,这是将字符串与单个字符进行比较,这是行不通的
要在字符串中查找子字符串,强烈建议使用:strstr