我对C编程完全不熟悉(只做java)并且语句不同以至于让我感到困惑。 我想知道我的方法标题是否表明我需要在方法中声明Nrows和Ncols(来自我的main方法)?只是简单地将它们设置为某个变量?
collectionView.reloadData()
此外,如果我的.txt文档看起来像这样:
#include <stdio.h>
void RdSize(int *Nrows, int *Ncols)
{
Nrows = NULL;
Ncols = NULL;
FILE *in = fopen("A1in.txt","r");
if(in == NULL) { perror("Error opening file");}
else
{
int i;
char input[4]; //I have no idea how to set the size of the array to
//the length of the first line of the input file
//(which has 4 chars, but is not optimal to put the
//number 4)
for(i = 0; i < sizeof(input); i++)
{
input[i] = fgetc(in); //trying to copy each char into input[]
//array
if(isdigit(input[i]) && Nrows == NULL)
{
Nrows = input[i] - '0'; //converting from char to int
} //Here I'm setting Nrows to
//something. Is this all I do?
if(isdigit(input[i]) && Nrows != NULL)
{
Ncols = input[i] - '0'; //converting from char to int
} //setting Ncols
}
}
fclose(in);
}
将此文件放入.txt文件中的2d char数组的最佳方法是什么?
非常感谢!
答案 0 :(得分:1)
要从文件的第一行读取两个数字,您只需使用fscanf()
代替循环。
void RdSize(int *Nrows, int *Ncols)
{
FILE *in = fopen("A1in.txt","r");
if(in == NULL) {
perror("Error opening file");
return;
}
if (fscanf(in, "%d %d", Nrows, Ncols) != 2) {
printf("Error reading size\n");
}
fclose(in);
}
%d
表示解析文件中的整数。这些数字被写入Nrows
和Ncols
指向的内存,这是调用者的变量。
答案 1 :(得分:0)
排序答案是否定的。就像Java一样,方法/函数的参数应该在别处定义并传入......参数的目的。
Nrows
和Ncols
是int
指针,这意味着它们不是保存值本身,而是将地址存储在保存值的内存中,可以通过取消引用来访问指针前缀为*
,例如*Ncols
。
我建议阅读和学习更多关于指针,因为它们在C / C ++编程中扮演着重要的角色。