Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中访问字符指针字符串中的特定字符_C - Fatal编程技术网

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

在C中访问字符指针字符串中的特定字符,c,C,我正在使用scanf读取字符串并将其放入char* scanf("%s", &str); printf("%c",str); 它工作正常,但我不知道如何访问该字符串中的特定字符,就像使用char[]一样。我一直在尝试增加地址: str += 1; 我一直在胡闹,但我得到的只是第一个字符或SEGFULTS或总线错误。是否可以在不复制到char[]的情况下使用该字符串?如果str声明为char*,则此语句 scanf("%s", &str); printf("%c",str);

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

scanf("%s", &str);
printf("%c",str);
它工作正常,但我不知道如何访问该字符串中的特定字符,就像使用char[]一样。我一直在尝试增加地址:

str += 1;

我一直在胡闹,但我得到的只是第一个字符或SEGFULTS或总线错误。是否可以在不复制到
char[]
的情况下使用该字符串?

如果str声明为
char*
,则此语句

scanf("%s", &str);
printf("%c",str);
这是不正确的。一定有

scanf("%s", str);
printf("%c", *str);
下一句话呢

scanf("%s", &str);
printf("%c",str);
这也不正确。一定有

scanf("%s", str);
printf("%c", *str);
如果要使用指针
char*
在字符数组中输出其他字符,则可以编写

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

甚至

printf( "%c", n[str] );
其中n是小于strlen(str)

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

1)

只需使用[]解除对指针数组的引用,并访问位置“i”处的字符

(二)


是-arrayname本身是指向字符串第一个字符的指针

如何分配内存?我猜您正在尝试写入未初始化的指针;scanf(“%s”和&str);str+=2;printf(“%c”,(str));如果我键入“TEST”,我将在标准输出中得到一个“V”。您需要在问题中输入该信息。@user161794它与&str一起工作,因为str和&str的值相同,尽管表达式的类型不同。char*str;scanf(“%s\n”,str);int i;对于(i=0;iscanf(“%s”,…)??@user161794是的,这是一样的。