C 从文件中读取多个字符串

C 从文件中读取多个字符串,c,c-strings,C,C Strings,很难弄清楚这一点,试图将两个名称转换为两个字符[] if (numpairs == 2){ fscanf("%s %s", malename1[MAX], malename2[MAX]); //read in names printf("%s %s", malename1[MAX], malename2[MAX]); //print out names 这是因为它崩溃了,并给了我“警告:警告:从不兼容的指针类型传递'fscanf'的参数1” 编

很难弄清楚这一点,试图将两个名称转换为两个字符[]

if (numpairs == 2){
            fscanf("%s %s", malename1[MAX], malename2[MAX]); //read in names 
            printf("%s %s", malename1[MAX], malename2[MAX]); //print out names
这是因为它崩溃了,并给了我“警告:警告:从不兼容的指针类型传递'fscanf'的参数1”

编辑:MAX定义为20,malename1[MAX+1]malename2[MAX+1](+1表示空)


编辑:我的读入有点起作用了,怎么才能解释一个空间来结束malename1的读入?我在Chris中读入malename1,Ryan读入malename2,但对于malename1,它扫描ChrisRyan

fscanf()的第一个参数是一个
文件*
,而不是
字符*

假设您打算使用
scanf()
,则代码试图将
char
视为
char[]
(假设
malename1
malename2
具有类型
char[]
,如上所述)。更改为:

scanf("%s %s", malename1, malename2);
printf("%s %s", malename1, malename2);
或者如果
fscanf()

注意:您还可以添加要读取的最大长度,以防止缓冲区溢出:

fscanf(fp, "%20s %20s", malename1, malename2); /* Read max of 20 chars. */

如果
malename1
malename2
char*
类型的字符串,则所需语句应为:

fscanf(fp, "%s %s", malename1, malename2); //fp is file pointer

你能展示一下malename1、malename2和MAX的定义吗?我忘了我的文件指针,哇…哈,关于我发布的空间问题有什么想法吗?你能仔细检查一下文件的内容吗?空间应该作为分隔符,下次输入时跳过。文件中的名称是“Chris Ryan”“正是,有了space@Ryan,我不确定这为什么不起作用。只需在此处使用文件进行双重检查,并在此处使用
sscanf()
fscanf(fp, "%s %s", malename1, malename2); //fp is file pointer