访问C中的char指针字符串中的特定字符

时间:2014-07-05 23:54:59

标签: c

我使用scanf读取字符串并将其放入char*

scanf("%s", &str);
printf("%c",str);

它工作正常,但我不知道如何访问该字符串中的特定字符,就像我使用char []一样。我一直试图增加地址:

str += 1;

我一直在搞乱,但我得到的只是第一个字符或段错误或总线错误。是否可以使用该字符串而无需复制到char[]

2 个答案:

答案 0 :(得分:1)

1)

  It works fine but I don't know how to access a specific character in that string as I would with a char[]

只需用[]取消引用指针数组,然后访问“i”位置的字符

str[i]

2)

I have been messing around a bit but all I get is the first character or segfaults or bus errors

是 - arrayname本身是指向字符串

的第一个字符的指针

答案 1 :(得分:-1)

如果str被声明为char *,那么这句话

scanf("%s", &str);

不正确。必须有

scanf("%s", str);

下一个声明

printf("%c",str);

也不正确。必须有

printf("%c", *str);

如果要使用指针char *输出字符数组中的其他字符,则可以编写

printf( "%c", *( str + n ) );

printf( "%c", str[n] );

或甚至

printf( "%c", n[str] );

其中n是一个小于strlen( str )

的整数值

考虑到str应指向一些已分配的内存。否则程序将具有未定义的行为。