我使用scanf
读取字符串并将其放入char*
。
scanf("%s", &str);
printf("%c",str);
它工作正常,但我不知道如何访问该字符串中的特定字符,就像我使用char []一样。我一直试图增加地址:
str += 1;
我一直在搞乱,但我得到的只是第一个字符或段错误或总线错误。是否可以使用该字符串而无需复制到char[]
?
答案 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应指向一些已分配的内存。否则程序将具有未定义的行为。