c - 类型 'char *' 但参数的类型为 'char' 并且数据未打印到文件

标签 c printf compiler-warnings

大家好,我在第 51 行收到警告“格式指定类型“char*”,但参数类型为“char”。我很难找到解决此错误的位置。另外,我的程序无法将新排序的数据打印到我的输出文件中。我如何改变我的组织来实现这一目标?

1    #include <stdio.h>
2    #include <stdlib.h>
3    #include <string.h>
4    #include <limits.h>
5    
6    int main(void) {
7       const int N=200;
8       char name[N], symbol[N];
9       char printed[N];
10      int atomicNumber[N], n, i, p, j, min;
11      double atomicWeight[N];
12      FILE *fi;
13      FILE *fo;
14    
15      fi=fopen("Lab6Elements.txt", "r");
16      if(fi==NULL) {
17          printf("Error opening file.\n");
18          return EXIT_FAILURE;
19      }
20      while(1){
21          n=0;
22          if(EOF == fscanf(fi,"%s%s%d%lf", &name[n], &symbol[n], &atomicNumber[n], &atomicWeight[n])) break; 
23    
24          printed[n]=0;
25          n++;
26          }
27    
28      fo=fopen("OutputData.txt", "w");
29          fprintf(fo, "\n%-15s%4s%5s%10s\n", "Element","Symb","No.","Weight");
30          for(i = 0; i < n; i++){
31              min = INT_MAX;
32    
33              for(j = 0; j < n; j++){
34    
35                  if(!printed[j] && atomicNumber[j]<min){
36                      min = atomicNumber[j];
37                      p = j;
38    
39                  }
40    
41                  fprintf(fo,"%-15s%-4s%5d%10.4lf\n", name[p], symbol[p], atomicNumber[p], atomicWeight[p]);
42    
43                                      printed[p] = 1;
44              }
45    
46          }
47          return EXIT_SUCCESS;
48      }

最佳答案

似乎在第 41 行。您声称以 %s 格式打印 c 字符串(类型 char *),但给出了 char参数,即 name[p]symbol[p]。选择使用 %c 打印单个 char 或将 namesymbol 作为参数。

关于c - 类型 'char *' 但参数的类型为 'char' 并且数据未打印到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42503947/

相关文章:

c++ - 使用 std::cout 打印零填充十六进制

编译警告。数组初始值设定项中的元素过多

c - 如何抑制阴影 "index"警告?

c - 通过示例了解限制限定符

c - 检索独立 MATLAB 程序的路径和文件名

c++ - C程序读取2个字符串之间的数据

c - printf变量char多次

c - 尝试读取带有表情符号的文本文件并打印出来

c - Printf算术运算优先级下

typescript - 是否可以避免此通用函数体中的类型断言?