无法弄清楚这一点,尝试将两个名称fscanf转换为两个char []
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()
的第一个参数是FILE*
,而不是char*
。
假设您打算使用scanf()
,那么代码将尝试将char
视为char[]
(假设malename1
和malename2
的类型为char[]
,如上所述)。改成:
scanf("%s %s", malename1, malename2);
printf("%s %s", malename1, malename2);
或
fscanf()
:fscanf(fp, "%s %s", malename1, malename2); /* where 'fp' is a valid 'FILE*'. */
注意,您还可以添加一个最大长度以防止缓冲区溢出:
fscanf(fp, "%20s %20s", malename1, malename2); /* Read max of 20 chars. */