c - 从指向字符串的指针数组访问字符串的字符

标签 c arrays string pointers

我是编程新手,遇到过这个特殊问题:

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 上有没有一种方法可以访问字符串指针数组中的指针所指向的字符串的每个单独字符?

最佳答案

改变

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

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

你可能需要添加

#include <string.h>

在开头。

pointer[i] 指向字符串(字符数组)。 *pointer[i] 为您提供字符串的第一个字符。 所以你的 if 条件只检查第一个字符。

所以你必须使用strchr

strchr 检查 '{' 字符是否存在于字符串中的任何位置。如果找到则返回指向第一次出现的指针,如果未找到则返回 0/NULL

关于c - 从指向字符串的指针数组访问字符串的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16108401/

相关文章:

c - Open MPI 中的屏障调用卡住(C 程序)

c - 父进程调用fork()后子进程内存泄漏,为什么?

c++ - 填充字符串数组或 char* 数组的问题

c++ - 用字符串中的空格替换符号

混淆两个不同字符数组的输出

php - 基本迭代器类和字符串遍历

c - printf ("%llx"有什么问题)?

android - Android NDK 上可用的库?

c - 逐列将字符串打印为矩阵格式

c - 我们如何返回最后一个字符串的索引或最后一个字符串的基地址?