1

私はプログラミングが初めてで、この特定の問題に直面しました:

int *FindLine(char *lines[100],int line_number) {
  char **pointer=lines;
  int i,*stack,counter=0;
  stack=(int*)calloc(30,sizeof(int));
  for (i=0;i<line_number;i++)
    if (*pointer[i]=='{') { 
      stack[counter]=i+1;
      counter++;
    }
  return stack;
}

main(){
  char *line[100];
  FILE *fp;
  char FileName[20];
  char Buffer[100];
  fp=fopen(FileName,"r");

  while(fgets(Buffer,100,fp)!=NULL) {        
    line[i]=strdup(Buffer);                    
    i++;
  }            
  NumOfLines=i;
  Stack=FindLine(line,NumOfLines);
  system("PAUSE");
}

stack は、各 '{' が表示される行の番号を格納しているはずですが、代わりに '{' が行の最初の文字である場合にのみ格納します。C で、文字列へのポインターの配列内のポインターが指す文字列の個々の文字すべてにアクセスする方法はありますか?

4

1 に答える 1

2

変化する

if (*pointer[i]=='{')

if (!strchr(pointer[i],'{'))

追加する必要があるかもしれません

#include <string.h>

最初に。

pointer[i]文字列 (文字の配列) を指します。 *pointer[i]文字列の最初の文字を返します。したがって、 if 条件は最初の文字のみをチェックします。

したがって、strchrを使用する必要があります。

strchr は、'{' 文字が文字列のどこかにあるかどうかをチェックします。見つかった場合は最初の出現へのポインターを返し、見つからなかった場合は0/を返しますNULL

于 2013-04-19T15:44:45.013 に答える