这是文本文件
Username:user1 Password:pass1
Username:user2 Password:pass2
我想从文本中读取用户名和密码。问题是没有办法改变文本的格式。我试着读,但由于冒号(:)之间没有空格,它给整个username:user1
作为字符串,但我只想要user1。我提到this问题,但由于冒号之间没有空格,所以没有帮助。
我试过了:
while ((fscanf(fp,"Username:%s Password:%s",username,password))!=EOF)
但是在user1和loop永远不会结束之后它会给出许多未定义的字符。
答案 0 :(得分:1)
请尝试以下代码:
#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;
}
答案 1 :(得分:0)
我会使用这个算法:
阅读char时不读&#39;&#39;
开始存储用户名var上的所有下一个字符,而char读取是!=&#39; &#39;
删除用户名字符串
重复步骤1.
与第2步相同,但现在我们将读取的数据存储在密码值中,而读取的字符是!=&#39;&#39; \ n&#39;
重复一遍!文件结尾