无法弄清楚这一点,尝试将两个名称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[](假设malename1malename2的类型为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. */

10-04 16:23