c - 在 c 中使用 fscanf() 从格式化的测试文件中读取

标签 c file-io

这是文本文件

Username:user1  Password:pass1
Username:user2  Password:pass2

我想从文本中读取用户名和密码。问题是没有办法改变文本的格式。我试图阅读,但由于冒号 (:) 之间没有空格,它给出整个 username:user1 作为字符串,但我只想要 user1。我提到了this问题,但它没有帮助,因为冒号之间没有空格。

我试过了:

 while ((fscanf(fp,"Username:%s Password:%s",username,password))!=EOF)

但是它在 user1 之后给出了许多未定义的字符并且循环永远不会结束。

最佳答案

试试下面的代码:

#include <stdio.h>
#include <string.h>

int main (int argc, char *argv[])
{
    char username[128];
    char password[128];
    FILE *fp;
    int ret;

    fp = fopen("read.txt", "r");
    if (!fp) {
        printf("Failed to open a file\n");
        return 1;
    }

    while (1) {
        ret = fscanf(fp, "Username:%s Password:%s\n",username,password);
        if (ret == EOF)
            break;
        if (ret == 2)
            printf("%s %s\n", username, password);
        else {
            printf("%d\n", ret);
            perror("fscanf:");
            break;
        }
    }

    fclose(fp);
    return 0;
}

关于c - 在 c 中使用 fscanf() 从格式化的测试文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47304287/

相关文章:

java - 创建并读取UTF-8文件夹java

c - 内存中的地址空间段和程序内存段有什么区别?

c - 将值递增到特定值,然后递减回初始起点?

c - 无法正确实现 fscanf 读取文本文件

c - gcc 中的 arm 内联汇编

java - 从多个文本文件中读取数据

c - 我在哪里可以下载 cron 实用程序的源代码?

Android - 读取文件

java - 我怎样才能用我的java程序打开一个文件?

c++ - 无法让 ios::beg 返回到文件开头