无法解决这个问题,尝试将两个名称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代表null)
编辑:我已经阅读了一些工作,怎么能占用一个空间来结束malename1的读入?我正在阅读Chris for malename1和Ryan for malename2但是对于malename1它会扫描ChrisRyan答案 0 :(得分:1)
fscanf()
的第一个参数是FILE*
,而不是char*
。
假设您打算使用scanf()
,代码会尝试将char
视为char[]
(假设malename1
且malename2
的类型为{{ 1}},如上所述)。改为:
char[]
或scanf("%s %s", malename1, malename2);
printf("%s %s", malename1, malename2);
:
fscanf()
请注意,您还可以添加要读取的最大长度以防止缓冲区溢出:
fscanf(fp, "%s %s", malename1, malename2); /* where 'fp' is a valid 'FILE*'. */
答案 1 :(得分:0)
如果malename1
和malename2
是char *
类型的字符串。然后所需的陈述应该是:
fscanf(fp, "%s %s", malename1, malename2); //fp is file pointer