【发布时间】:2015-05-21 16:17:59
【问题描述】:
我想从 .txt 文件中获取字符串,读取每个都有姓名和电话号码的行。姓名和电话号码之间有两个 \t 字符。
例子:
name\t\t\tphone#
thomas jefferson\t\t054-892-5882
bill clinton\t\t054-518-6974
代码是这样的;
FILE *f;
errno_t err;
treeNode *tree = NULL, temp;
char input, fileName[100];
//get file name
while (1){
printf("Enter input file name: ");
scanf_s("%s", fileName, 100);
//f = fopen(fileName, "r");
if(err = fopen_s(&f, fileName, "r"))
printf("Cannot find file!\n");
//if (f == NULL)
// printf("Cannot find file!\n");
else
break;
}
//save info into BST
fscanf_s(f, " NAME Phone #\n", 20);
while (fscanf_s(f, "%[^\t]s\t\t%[^\n]s",
temp.name, temp.phoneNo, 50, 30) != EOF)
bstInsert(tree, temp.name, temp.phoneNo);
fclose(f);
treeNode 是一个二叉搜索树结构,bstInsert 是一个将包含第二和第三个参数的结构添加到二叉搜索树的函数。
在我用scanf_s得到文件名后,代码在fscanf_s语句处停止,在调试器上显示如下;
temp.name: invalid characters in string.
temp.phoneNo: ""
我不知道[^\t] 或[^\n] 是如何工作的。谁能让我知道如何处理这个问题?提前致谢!
【问题讨论】:
-
网站没有按我的意愿显示一些文本。\n 字符在每行的末尾。
-
在编辑框中有一个“?”右上角的图标。它向您展示了如何格式化代码/....的帮助。正确大写单词也会使内容更具可读性。