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,它扫描ChrisRyanfscanf()的第一个参数是一个
文件*
,而不是字符*
假设您打算使用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