我正在尝试使用从文件中的行填充字符串数组的函数,但编译器(GCC)仍然给我一个警告。比我尝试运行编译应用程序,它给了我 “分段错误” 错误
源代码:
将行读入到字符串数组
主要
#include <stdio.h>
#include "getAdresses.h"
int main(int argc, char **argv){
char adresses[1024][128];
getAdresses(adresses);
printf("%s", adresses[1]);
}
getAdresses
include <stdio.h>
int getAdresses(char **adresses){
FILE *fr;
fr = fopen("adresses", "r");
int i = 0;
while(adresses[i-1][0] != EOF){
fscanf(fr, "%s\n", &adresses[i]);
i++;
}
}
它给我这个错误:
main.c: In function ‘main’:
main.c:9:2: warning: passing argument 1 of ‘getAdresses’ from incompatible pointer type [enabled by default]
In file included from main.c:3:0:
getAdresses.h:1:5: note: expected ‘char **’ but argument is of type ‘char (*)[128]’
所以两diemensional阵列罢工再次... – Dariusz
AFAIKT它的“只是”一个警告,所以代码至少应该工作。我认为从文件中读取未绑定不是一个好主意。如果您尝试阅读更多的1024个“字符串”,您认为会发生什么? – Friedrich
编译器告诉你你做错了什么。它是一个警告,因为它可能是你的意思是通过错误的类型,但如果你不明白的警告,那么你应该把它视为致命的。 – pm100