我是编程新手,遇到过这个特殊问题:
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/