-
不。。。 你还没有弄清楚 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,它可以轻松检查非法内存操作。
-
我不这么认为,char *是一个指针,它可以指向一个连续的字符串,但是scanf,gets似乎不是,它只是存储一个字符串的地址。
-
C 从键盘输入字符串的步骤如下:
1.首先,让我们创建一个新的开发 C++ 项目。
2.接下来,在项目中创建一个新的 C 程序文件。
3.然后在 C 文件中声明一个字节数组。
4.接下来,我们使用 printf 函数提示用户输入字符串,并通过 scanf 接收用户的输入字符串。
5.接下来,通过 printf 函数输出用户输入。
6.最后,运行 C 程序,我们可以在输入内容后输出内容。 这解决了 C 从键盘输入字符串的问题。
-
输入: 1. 赋值。
c 输入函数只会为一个字节空间分配一个值,而 %s 将继续这样做,直到在输入中遇到空格字符。
2.地址字符。
输入 scanf("%c", a);这里 & 不能少,并且 scanf("%s",s);这里不能有&符号。
输出:1.长度。
c 只能输出一个字符,%s 输出一串字符,直到某个字节的内存元素是一个字符'\0',则输出字符并结束寻址。
-
** 如下:int main()。
float r,h,s;
scanf("%f",&r);
scanf("%f",&h);
s=2*printf("表面积为 %f",s);
return 0;
-
在 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);
-
ch 缓冲区太短,导致溢出,ch 只存储你输入的前 5 个字符,有限的输入是 scanf(“%5s”,ch),所以 ch 是你计数的前 5 个字符,至于 char ch; 该错误是由于格式错误造成的,即 %s 和 ch 不匹配,char ch[] 在 C 中不为 true,并且数组必须是固定长度的。
-
首先,你对字符作为字符的声明方式没有错。 ch[5] 是 5 个字符。
其次,这种说法没有错。
唯一的问题是 sanf 和 printf 中的格式字符,如果是 char,它应该是 %c如果你要在程序中分配一个值,你需要使用一个字符串""enform,而字符只能使用''括号内。
此定义与 C++ 不同,后者允许 char ch。
-
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',所以会有乱码。
-
char ch[5] 表示定义了一个字符数组(即字符串),有 5 个数组单元,每个单元都是一个字符类型,因为字符串以 0 结尾,所以 5 个字符数组实际上可以完整存储,只能是一个长度不超过 4 个字符的字符串, 如果更多,则会占用其他单位(这些单位可能被系统分配给其他变量,可以用来存储字符串的字符数组就是你定义的 5 个单位),可能会出现溢出,这意味着有时输出字符串后面会出现乱码。
char ch 表示定义了一个字符变量,应该使用 %c 通过 scanf 为其赋值,即 scanf("%c", &ch),它只能表示一个字符。
char ch 数组定义不允许 null。
char ch[1] 也是一个字符数组,所以你可以输入一个字符串,也可以随便输入它,它可能会溢出。
-
答:ch [5} 表示你已经声明了一个五字符数组,你说的是输入然后输出,因为你把它存储在地址 ch[0] 中,这是第一个字符数组。
你声明 char ch; char ch,只要声明数组的名称,比数组的大小大,这样电脑就无法执行,就像你申请一个人的账号一样,你只告诉别人名字,不要告诉别人你的申请人的性别,别人还是不会给你开账。 呵呵,打个比方。
如果要限制字符串的长度,可以在每个数组中存储一个字符,以便对其进行控制。
谢谢,希望对您有所帮助!
-
你是对的,太多的输入会溢出。
您可以尝试输出,scanf 函数是从缓冲区读取的数据,第二个字符串的数据是空格或换行符制表符。 您可以单独读取它们,但在两者之间添加 fflush(stdin); 清除缓冲区。
使用字符串就是使用它的第一个地址(有时和长度,实际上,拥有第一个地址就足够了),无论字符串有多长。 最明显的例子是,当一个(常量)字符串作为参数及其第一个地址传递时。 所以你的比较只是地址的比较。