下面是我的代码,我一直在为这部分工作,创建了一个可以处理客户端数据的C套接字服务器,但是在文件处理方面遇到了问题。我想从文件中选取数据并将其存储到特定位置的结构中,然后根据所选择的数据擦除文件。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "struct.h"
struct student {
char command[10];
char value[50];
char user[50];
};
int main() {
int size, i;
struct student s1[256];
FILE *file = fopen("file.txt", "r");
if (file == NULL) {
printf("Error in reading student data");
return 1;
}
size = 0;
while(fscanf(file,"%s,%s,%s",
s1[size].command,
s1[size].value,
s1[size].user) != EOF) {
printf("%s%s%s\n",s1[size].command,s1[size].value,s1[size].user);
printf("%s\n",s1[size].command);
size++;
}
fclose(file);
return 0;
}
我想从文件中选择包含以下信息的数据,并将其存储在结构数组的特定部分
a,w,a
r,e,1
即如果我存储
a in s1[0].command
w in s1[0].value
a in s1[0].user
和
r in s1[1].command
e in s1[1].value
1 in s1[1].user
但是当我尝试运行我的代码时,它会打印
a, w, a in s1[0].command
和
r, e, 1 in s1[1].command
所以我很乐意寻求帮助,因为我尝试了谷歌搜索,但找不到解决方案。
答案 0 :(得分:1)
"%s"
格式读取 以空格分隔的 “单词”。
如果没有空格分隔“单词”,则必须使用其他方式来解析输入。例如,通过reading the whole line,然后使用类似strtok
的方式来“标记”字符串。
或确保输入格式以空格分隔。