使用[^…]的fscanf格式输入的正确格式?
我正在尝试读取格式为#string 1###string 2##等的文件,使用“#”符号作为唯一的分隔符。我还试图将每个字符串复制到一个char数组中。下面是我当前的一些代码,但它似乎不起作用:使用[^…]的fscanf格式输入的正确格式?,c,scanf,C,Scanf,我正在尝试读取格式为#string 1###string 2##等的文件,使用“#”符号作为唯一的分隔符。我还试图将每个字符串复制到一个char数组中。下面是我当前的一些代码,但它似乎不起作用: char temp[20]; if(fscanf(fp, "%15[^#]", temp ==1) .... fp被打开并声明,并且该语句始终显示为false(扫描失败) 想法?我想你可能需要: if(fscanf(fp, "#%15[^#]#", temp) ==1) 我写了一封信。请随意更改以满
char temp[20];
if(fscanf(fp, "%15[^#]", temp ==1) ....
fp被打开并声明,并且该语句始终显示为false(扫描失败)
想法?我想你可能需要:
if(fscanf(fp, "#%15[^#]#", temp) ==1)
我写了一封信。请随意更改以满足您的需要:)
#包括
#包括
内部主(空){
字符输入[]=“#字符串1##字符串2##三##最后一个但有一个##五个”;
char-tmp[100];
char*pinput=输入;
/*转换规范为
** %99[^#]
**另一个“#”是必须匹配的文本*/
而(sscanf(pinput,#%99[^#]#,tmp)==1){
printf(“得到[%s]\n”,tmp);
pinput+=strlen(tmp)+2;
}
返回0;
}
它是否适用于良好的ole scanf(或stdin文件)?我刚刚注意到,您正在将相等比较的结果作为参数传递给1。这是打字错误还是您的实际代码?您需要绕过输入中的“#”
。
#include <stdio.h>
#include <string.h>
int main(void) {
char input[] = "#string 1##string two##three##last but one##five#";
char tmp[100];
char *pinput = input;
/* the conversion specification is
** %99[^#]
** the other '#' are literals that must be matched */
while (sscanf(pinput, "#%99[^#]#", tmp) == 1) {
printf("got [%s]\n", tmp);
pinput += strlen(tmp) + 2;
}
return 0;
}