3 个回答

fscanf遇到空格换行会停止读取。

%*s表示丢弃第二个字符串。

#include<stdio.h>

int main(int argc, char *argv[]) {    
    char buffer[21]={"buffebuffebuffebuffe"};
    printf("%s\n",buffer);
    FILE* fp = fopen("user.txt", "r");
    while (fscanf(fp, "%s%*s", buffer) != EOF) {
        printf("uid:%s\n",buffer);
    }
    return 0;
}

user.txt

123456 1212
233333 6767

结果:

buffebuffebuffebuffe
uid:123456
uid:233333
新手上路,请多包涵

C语言没有办法直接实现你想要的功能,而且不能一边修改一个文件,一边修改一个文件
你这个功能可以在找到第一个空格,进入另一个循环找回车,伪代码:
while(not end) {

while (not space){
    next char
}
skip space
while (not enter){
    next char
}

}

~~可以这么实现

代码

char buffer[200];

while (fscanf(fp, "%s%*[^\n]\n", buffer) != EOF) {
    cout << buffer << endl; // 输出 用你的 printf 或者 其他函数
}

% scanf系列函数的format开始
* 意思是字符将不会保存到任何地方
[^n] 类似于正则里面的字符集,表示n以外的所有字符
n 换行符

参考

stackoverflow
cppreference

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏