【发布时间】:2018-02-09 02:17:04
【问题描述】:
我一直在尝试使用 strtok 对表中的字符串进行标记,但它不起作用。
文本文件中的表格采用这种格式(仅作为示例),以制表符分隔
Jane Doe iPhone 6 nj-34-k4-3j-jk
我想获得第三个元素,但它不起作用。 这就是函数的样子
scanf("%s", filename);
fp2 = fopen(filename,"r");
if (fp2 == NULL){
printf("Error reading File \n");
exit(1);
}
//while reading a line, keep getting tokens (a line)
while ( fgets ( str, sizeof(str), fp2 ) != NULL )
{
token = strtok(str," ");
token = strtok(NULL," ");
token = strtok(NULL," ");
if(index>0){
strupr(token);
strcpy(address[index-1], token); //store in array
}
index++;
}
【问题讨论】:
-
您是指真正的制表符 (
'\t') 还是一些空格 (' ') 以通过“制表符”对齐? -
@MikeCAT 是的真实标签('\t')
-
strtok()的第二个参数应该有一个\t(制表符)作为字符之一。它可能也有也可能没有换行符\n。 -
@JonathanLeffler 尝试过,但程序停止工作
-
您还没有展示
address或index是如何定义和初始化的。您没有检查来自strtok()的回报;您没有显示在strtok()破坏它之前读取的行或strtok()返回的内容。该代码不是 MCVE (minimal reproducible example)。很难猜测出了什么问题。
标签: c