关于C字符串输入的问题

发布于 科技 2024-02-05
12个回答
  1. 匿名用户2024-01-25

    不。。。 你还没有弄清楚 C 语言中字符串的含义。

    char * a 只是定义了一个字符类型的指针,它本身只是一个指针变量,它必须指向实际的内存空间才有意义(作为一个变量,它也占用了一定的空间,你可以用 sizeof(char *) 来查看它,也可以用 C 语言操作,但不建议使用, 这很好理解)。当引用指针指向的空间时,您实际上是在读取由变量 a 的值表示的内存地址中的数据。 c 中的字符串不是变量类型,它只是一个字符串数组,然后指定结束标志'\0',将其视为数组会更有效。

    例如,char string[128] ="hello"; char * a = string;

    因此,a 指向一个 128 字节的内存空间,这是数组的长度,作为字符串,它是 5。 对 a 或 string 的操作是否越界的判断是 128。

    如果你正在学习C语言,最好始终注意你正在研究的内容在内存中的位置。

    此外,我们推荐 Linux 登陆工具 Valgrind,它可以轻松检查非法内存操作。

  2. 匿名用户2024-01-24

    我不这么认为,char *是一个指针,它可以指向一个连续的字符串,但是scanf,gets似乎不是,它只是存储一个字符串的地址。

  3. 匿名用户2024-01-23

    C 从键盘输入字符串的步骤如下:

    1.首先,让我们创建一个新的开发 C++ 项目。

    2.接下来,在项目中创建一个新的 C 程序文件。

    3.然后在 C 文件中声明一个字节数组。

    4.接下来,我们使用 printf 函数提示用户输入字符串,并通过 scanf 接收用户的输入字符串。

    5.接下来,通过 printf 函数输出用户输入。

    6.最后,运行 C 程序,我们可以在输入内容后输出内容。 这解决了 C 从键盘输入字符串的问题。

  4. 匿名用户2024-01-22

    输入: 1. 赋值。

    c 输入函数只会为一个字节空间分配一个值,而 %s 将继续这样做,直到在输入中遇到空格字符。

    2.地址字符。

    输入 scanf("%c", a);这里 & 不能少,并且 scanf("%s",s);这里不能有&符号。

    输出:1.长度。

    c 只能输出一个字符,%s 输出一串字符,直到某个字节的内存元素是一个字符'\0',则输出字符并结束寻址。

  5. 匿名用户2024-01-21

    ** 如下:int main()。

    float r,h,s;

    scanf("%f",&r);

    scanf("%f",&h);

    s=2*printf("表面积为 %f",s);

    return 0;

  6. 匿名用户2024-01-20

    在 C 语言中,有两种方法可以输入和输出字符串:

    1 使用 scanf printf 输入和输出。

    Scanf Printf 是 C 语言中的格式化输入和输出函数,可用于各种基本类型的输入和输出,其作用域也支持字符串 (char*)。

    格式化的字符为 %s。

    定义 char str[100];

    输入 scanf("%s",str);

    输出 printf("%s",str);

    2 C 语言还支持专门的字符串输入和输出函数:获取 puts。

    gets 的目的是读取输入行,并将读取的换行符替换为字符串终止符。

    put 的作用是输出单行字符串,即在输出字符串内容后,会自动在末尾添加换行符。

    定义 char str[100];

    输入 gets(str);

    输出 puts(str);

  7. 匿名用户2024-01-19

    ch 缓冲区太短,导致溢出,ch 只存储你输入的前 5 个字符,有限的输入是 scanf(“%5s”,ch),所以 ch 是你计数的前 5 个字符,至于 char ch; 该错误是由于格式错误造成的,即 %s 和 ch 不匹配,char ch[] 在 C 中不为 true,并且数组必须是固定长度的。

  8. 匿名用户2024-01-18

    首先,你对字符作为字符的声明方式没有错。 ch[5] 是 5 个字符。

    其次,这种说法没有错。

    唯一的问题是 sanf 和 printf 中的格式字符,如果是 char,它应该是 %c如果你要在程序中分配一个值,你需要使用一个字符串""enform,而字符只能使用''括号内。

    此定义与 C++ 不同,后者允许 char ch。

  9. 匿名用户2024-01-17

    puts() 和 gets() 都是数组函数,数组应该在输入或输出之前定义,例如:char a[50];

    gets(a);

    puts(a);

    这是一个简单的输入,然后输入的东西是输出,puts() 的输入和 printf 的输出不同,puts() 遇到 '0'终止,printf 并非如此。

    例如:char a[50];

    gets(a);

    puts(a);

    printf("%s",a);

    如果输入的字符正好是 50 个字符,则两次的输出相同。 但是,如果输入字符少于 50 个,则 puts() 输出所有输入字符,而没有输入的字符则不输出,并且 printf 无法识别它们'\0',所以会有乱码。

  10. 匿名用户2024-01-16

    char ch[5] 表示定义了一个字符数组(即字符串),有 5 个数组单元,每个单元都是一个字符类型,因为字符串以 0 结尾,所以 5 个字符数组实际上可以完整存储,只能是一个长度不超过 4 个字符的字符串, 如果更多,则会占用其他单位(这些单位可能被系统分配给其他变量,可以用来存储字符串的字符数组就是你定义的 5 个单位),可能会出现溢出,这意味着有时输出字符串后面会出现乱码。

    char ch 表示定义了一个字符变量,应该使用 %c 通过 scanf 为其赋值,即 scanf("%c", &ch),它只能表示一个字符。

    char ch 数组定义不允许 null。

    char ch[1] 也是一个字符数组,所以你可以输入一个字符串,也可以随便输入它,它可能会溢出。

  11. 匿名用户2024-01-15

    答:ch [5} 表示你已经声明了一个五字符数组,你说的是输入然后输出,因为你把它存储在地址 ch[0] 中,这是第一个字符数组。

    你声明 char ch; char ch,只要声明数组的名称,比数组的大小大,这样电脑就无法执行,就像你申请一个人的账号一样,你只告诉别人名字,不要告诉别人你的申请人的性别,别人还是不会给你开账。 呵呵,打个比方。

    如果要限制字符串的长度,可以在每个数组中存储一个字符,以便对其进行控制。

    谢谢,希望对您有所帮助!

  12. 匿名用户2024-01-14

    你是对的,太多的输入会溢出。

相关回答
4个回答2024-02-05

您可以尝试输出,scanf 函数是从缓冲区读取的数据,第二个字符串的数据是空格或换行符制表符。 您可以单独读取它们,但在两者之间添加 fflush(stdin); 清除缓冲区。

12个回答2024-02-05

使用字符串就是使用它的第一个地址(有时和长度,实际上,拥有第一个地址就足够了),无论字符串有多长。 最明显的例子是,当一个(常量)字符串作为参数及其第一个地址传递时。 所以你的比较只是地址的比较。

12个回答2024-02-05

给你一个简明的解释会帮助你理解。

#include >>>More

9个回答2024-02-05

当单引号用作字符时,必须用'否则,编译器会将其视为函数引用,而不是字符。 示例如下: >>>More

24个回答2024-02-05

左边的函数不仅可以用于它前面的 main 函数,还可以用于它前面定义的其他函数。 >>>More