0

无法弄清楚这一点,试图将两个名称 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 的 malename1 和 Ryan 的 malename2 但对于 malename1 它扫描 ChrisRyan

4

2 回答 2

1

的第一个参数fscanf()是 a FILE*,而不是 a char*

假设您打算使用scanf(),代码试图将 achar视为 a char[](假设malename1malename2具有 type 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. */
于 2012-06-14T14:49:57.790 回答
0

如果malename1malename2是类型的字符串char *。那么所需的语句应该是:

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

http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/

于 2012-06-14T16:28:08.540 回答