だから私は持っていint **
ます。ピクセル値が含まれています。私がやろうとしているのは、設定された数のピクセル値の値を変更することです。値が90だとすると、xピクセル量の黒いエッジを作成する必要がある最大レベルに変更したいと思います。私は過去1時間それをいじっていましたが、**内の実際の値を変更する方法を理解できないようです
これは私がこれまでに持っているものです:
int pgmDrawEdge( int **pixels, int numRows, int numCols, int edgeWidth, char **header ){
int i=0, j=0, count=0;
int intensity=atoi(header[2]);
while(count<edgeWidth){
for(; i<numRows; i++){
for(; j<numCols; j++){
pixels[i][j]=intensity;
}
}
count++;
}
return 0;
}
これは主な関数呼び出しです:
pgmDrawCircle(pixel, rows, cols, circleCenterRow, circleCenterCol, radius, header);
私は正しい考えを持っていると思いますが、上で述べたように、値を変更する方法を理解できないようです。
私はそうは思いませんが、メモリを割り当てる必要がありますか? メインから渡されているので、すでにいっぱいなので必要ないと思います...正しいですか?
リクエストによると、pgmRead は次のとおりです。
int ** pgmRead( char **header, int *numRows, int *numCols, FILE *in ){
int i, j, temp, intensity;
fgets(header[0], maxSizeHeadRow, in);
fgets(header[1], maxSizeHeadRow, in);
fscanf(in, "%d %d", numCols, numRows);
fscanf(in, "%d", &intensity);
sprintf(header[2], "%d", intensity);
int **ptr=(int **)malloc(*numRows*sizeof(int *));
for(i=0; i<*numRows; i++){
ptr[i]=(int *)malloc(*numCols*sizeof(int));
}
for(i=0; i<*numRows; i++){
for(j=0; j<*numCols; j++){
fscanf(in, "%d", &temp);
ptr[i][j]=temp;
}
}
fclose(in);
return ptr;
}
メイン関数では:
int **pixel=NULL;
pixel=pgmRead(header, &rows, &cols, in);
if(strcmp(argv[1],"-e")==0){
printf("Edge Drawing\n");
pgmDrawEdge(pixel, rows, cols, edgeWidth, header);
}