如何在c中使用scanf读取括号之间的字符串?例如,如果文件中的文本是“text a 123(myString)text”,我如何获得“myString”?
答案 0 :(得分:1)
您可以将%[]
用作穷人的正则表达式:
#include <stdio.h>
int main(){
const char data[] = "text a 123 (myString) text";
char str[20];
int cr = sscanf( data, "%*[^(](%[^)])", str ); /* skip until '(' and read up to ')' */
if (cr == 1) {
printf(">%s<\n", str);
}
else {
printf("NOT FOUND\n");
}
return 0;
}
以上程序正确输出:
>myString<
答案 1 :(得分:0)
只是为了阅读你的专栏,你可以有类似
的内容char a[50];
fscanf(stdin,"%*s %*s %*d (%[^)]) %*s",a);
答案 2 :(得分:0)
完整示例:
#include <stdio.h>
int main(){
const char data[] = "text a 123 (myString) text";
char str[20];
sscanf( data, "%*s %*c %*d (%[^)]", str );
puts( str );
return 0;
}
更新:
您可以使用以下内容替换sscanf行(在(
之前忽略avrytihing,然后阅读)
:
sscanf( data, "%*[^(](%[^)]", str );
注意:我不确定这种编程习惯是多么便携,但它至少在Ubuntu 12.04上有效。
答案 3 :(得分:0)
示例:
#include <stdio.h>
#include <stdlib.h>
int main(){
char mystring[1025];
FILE * fp = NULL;
fp= fopen("dd.txt","r");
if(!fp){
}else{
fscanf(fp, "%*s %*c %*d (%[^)] %*s",mystring);
printf("%s\n",mystring);
}
fclose(fp);
}