【发布时间】:2011-08-01 16:44:03
【问题描述】:
我有这样的事情(没有间距问题),我正在读取一个包含由# 符号分隔的字符串的文件,并尝试将它们中的每一个读入char *s 的数组中。但是,每个包含字符串的char* 都与字符串的确切长度相同。不过这有点麻烦。
char * fragments[1000];
char temp[20];
while (i < numFrags) {
if (fscanf(fp, "#%15[^#]#", temp) == 1) {
char entry[strlen(temp)];
entry = strcpy(entry, temp);
fragments[i++] = entry;
printf("%d\n", strlen(temp));
}
}
想法?
【问题讨论】:
-
"a little buggy" 没用。请告诉我们实际存在哪些错误,例如您输入的内容、预期的内容以及输出的内容。
-
char * 怎么可能是“字符串的确切长度”?还是您的意思是每个 char * 必须指向等长字符串集合中的一个?
-
我认为“a little buggy”是 OP 的隐喻:你看,每个字符串都包含它携带的字符,就像一辆小车或一辆小红色马车一样。我可能是错的。
-
我不确定我是否确切地知道你想从你的函数中得到什么,但一个快速解决你问题的方法是使用 malloc 和 free 在堆上使用动态分配,而不是使用固定大小的数组。
-
一个问题是在本地分配数组
entry,然后保留它的地址。我也不知道fscanf的使用是否正确,因为我不知道输入格式。