我正在读取输入文件:
# This is a comment
Matrix A =
//NOTICE THIS LINE
# matrix A (2 diagonal line segments)
100 100
200 200
我无法想象如何在没有空格的情况下从该行中提取矩阵A. 现在我有
sscanf(buffer,"%s%*[^\n]", word);
我试过
sscanf(buffer,"%*[ ]%s%*[^\n]", word);
和
sscanf(buffer," %s%*[^\n]", word);
以及其他许多人
它不会忽略空格,而是将它复制到单词变量以及矩阵a中。
答案 0 :(得分:2)
如果您更清楚地了解您想要阅读的内容以及您想要忽略的内容,那将会有所帮助。由于目前尚不清楚,我将采取猜测:
sscanf(input_line, " %[^=]", matrix_name);
会留下尾随的空格,所以你需要单独修剪它:
rtrim(matrix_name);
rtrim类似于(为了清晰起见而无视健全/错误检查):
// warning: untested code.
void rtrim(char *string) {
int pos;
for (pos=strlen(string); pos >= 0 && isspace(string[pos]); --pos)
;
string[pos] = '\0';
}
答案 1 :(得分:1)
sscanf不处理正则表达式。
答案 2 :(得分:1)
答案 3 :(得分:1)
很简单:
char s1[100],s2[100],s3[100];
if( 3==sscanf(buffer,"%s%s%s",s1,s2,s3) && !strcmp(s2,"A") && !strcmp(s3,"=") )
puts(s1);