【发布时间】:2012-11-13 11:46:56
【问题描述】:
我希望你能为我正在为作业编写的程序的这种方法提供一些输入和二维数组。编程语言是 C 我得到了一些输入参数:
FILE * ifp = 输入文件指针,在main中打开,打开一个txt文件,格式为每行3个字符串
char ** firstTokens, middleTokens = 2 维 char 数组,我希望它们保留前两个字符串减去每个字符串末尾的预期标点符号(例如逗号和句点)。计划作为输出参数。
char * lastLetter = txt 文件中每行最后一列中任何字符串的第一个字母。计划作为输出参数。
int numberOfLines = 我希望从文本文件中读取的行数
这是对我的 main 函数中的方法的调用:
readLine(ifp, firstTokens, middleTokens, lastLetter, numberOfLines);
我认为我的问题在于正确获取 firstTokens 和 middleTokens,因为我在编辑时总是遇到编译器错误和分段错误。对错误的一些帮助/澄清将不胜感激。
void readLine(FILE * ifp, char ** firstTokens, char ** middleTokens, char* lastLetter, int numberOfLines)
{
char* tempFirst;
char* tempMiddle;
char* tempLast;
char delim[4];
delim[0] = '.';
delim[1] = '\0';
delim[2] = '\n';
delim[3] = ',';
int i;
for(i = 0; i < numberOfLines; i++)
{
fscanf(ifp, "%s %s %s", tempFirst, tempMiddle, tempLast);
*firstTokens[i] = strtok(tempFirst, delim);
*middleTokens[i] = strtok(tempMiddle, delim);
lastLetter[i] = tempLast[0];
}
}
【问题讨论】:
-
char ** firstTokens 被称为指向(在您的情况下)char 的指针。除非您为其分配内存,否则会出现未定义的行为。
-
没有为
fscanf()的目标分配内存。 -
不幸的是,
strtok无法对'\0'字符进行标记。它想要一个正确的 C 字符串作为它的最后一个参数,这意味着它在那个字符上 end。所以你只标记'.'字符。
标签: c compiler-errors segmentation-fault