C 如何存储字符串直到找到空白
我需要做一个程序,我需要检查一个文件中的城市名称是否在另一个文件中。 cities.txt文件类似于: 伦敦(2个空间)巴黎(3个空间)巴塞罗那(3个空间)迈阿密(2个空间)东京(2个空间)柏林(3个空间)曼彻斯特(3个空间)罗马(2个空间)悉尼 文件ckeck_cities.text如下所示: 巴塞罗那迈阿密东京悉尼 我将文件check_cities.txt存储到一个struct中,我知道我需要为cities.txt编写一个循环,通过搜索空白,然后将每个单词与整个第二个城市列表(check_cities.txt)进行比较来查找单词边界 问题是我不知道在找到空白后如何存储字符串。谁能告诉我怎么做 '''C 如何存储字符串直到找到空白,c,string,C,String,我需要做一个程序,我需要检查一个文件中的城市名称是否在另一个文件中。 cities.txt文件类似于: 伦敦(2个空间)巴黎(3个空间)巴塞罗那(3个空间)迈阿密(2个空间)东京(2个空间)柏林(3个空间)曼彻斯特(3个空间)罗马(2个空间)悉尼 文件ckeck_cities.text如下所示: 巴塞罗那迈阿密东京悉尼 我将文件check_cities.txt存储到一个struct中,我知道我需要为cities.txt编写一个循环,通过搜索空白,然后将每个单词与整个第二个城市列表(check_c
#包括
#包括
#包括
#包括
#定义最大城市大小城市名称10
#定义麻木的城市20
#定义最大字符串大小100
文件*fp;
类型定义结构{
char checkcities[最大大小、名称、城市];
}listn;
[麻木的城市];
作废流程(常量字符*城市){
int i=0,j=0;
虽然(iOne非常简单的方法是使用%s
格式的函数读取文件cities.txt
。它将读取空格分隔的单词,无论您将check_cities.txt存储到结构中的空格数是多少,您确定它是结构而不是数组吗?城市名称应该存储在数组中,因为数字城市的数量可能会有所不同。数组还允许对其元素进行迭代。您必须这样做才能搜索城市。我只需逐个字符浏览原始文件,将它们复制到目标位置,直到找到一个空间。提供答案的问题是存储单词的方法太多。您应该向我们展示您的代码和您对目标字符串的选择。@一些程序员伙计,但FSF不能正确地读取第一个字符串?如果我将I++放在另一个空格中,因为字符串被2或3个空格分隔。我需要程序读取第一个城市,将其与整个列表进行比较,然后读取下一个城市(字符串)@Cubo78我现在不在家,所以我不能发布代码,但我可以稍后发布。当你说“目的地位置”时,它意味着将城市存储到数组或结构中?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX_SIZE_NAME_CITY 10
#define NUMB_CITIES 20
#define MAX_STRING_SIZE 100
FILE *fp;
typedef struct {
char checkcities[MAX_SIZE_NAME_CITY];
}listn;
listn n[NUMB_CITIES];
void process(const char *city) {
int i=0, j=0;
while(i<strlen(city)-1){ //read all lines
for ( i = 0; fscanf(fp, "%s", city[i]) == 1; ++i);
while ((strcmp(city,n[j].checkcities)!=0)&& (j<NUMB_CITIES)){
j++;
}
if (strcmp(city,n[j].checkcities.)==0){
printf("%s", n[j].checkcities);
i++;
}
j=0;
}
}
int main()
{
int i=0;
FILE *arch;
arch = fopen("check_cities.txt", "r");
if (arch==NULL){
printf("ERROR");
}
else{
while (!feof(arch)){
fscanf(arch, "%s\n", n[i].checkcities);
i++;
// store the names into the struct
}
}
fclose(arch);
char city[MAX_SIZE_NAME_CITY];
fp = fopen("cities.txt", "r");
if (fp==NULL){
printf("ERROR");
}while (fgets(city, MAX_SIZE_NAME_CITY,fp) != NULL){
process(city);}
fclose(fp);
return 0;
}