【问题标题】:Accessing a specific character in a char pointers string in C在 C 中访问 c​​har 指针字符串中的特定字符
【发布时间】:2014-07-05 23:54:59
【问题描述】:

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

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

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

str += 1;

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

【问题讨论】:

  • 你是如何分配内存的?我猜您正在尝试写入未初始化的指针。
  • 我就是这么做的:char *str; scanf("%s", &str); str += 2; printf("%c",(str));如果我输入“TEST”,我将在标准输出中得到一个“V”。
  • 您需要将该信息放入您的问题中。

标签: c


【解决方案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

是 - 数组名本身是指向字符串第一个字符的指针

【讨论】:

    【解决方案2】:

    如果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 应该指向一些分配的内存。否则程序将有未定义的行为。

    【讨论】:

    • @user161794 它适用于 &str,因为 str 和 &str 的值是相同的,尽管表达式的类型不同。
    • 字符 *str; scanf("%s\n", str);诠释我; for(i = 0; i
    • 你为什么鼓励用户使用scanf("%s", ...)??
    • @user161794 是的,是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多