|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Xlyxcar 于 2018-8-22 16:41 编辑
关于题2
试了一下代码,没有出错,能正常执行
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str[10];
- strncat(str, "I love FishC.com!", sizeof(str));
- printf("str:%s, strlen:%d, sizeof:%d", str, strlen(str), sizeof(str));
- return 0;
- }
复制代码
按照答案改进后就出问题了:
- int main()
- {
- char str[10];
- strncat(str, "I love FishC.com!", sizeof(str-1));
- printf("str:%s, strlen:%d, sizeof:%d", str, strlen(str), sizeof(str));
- return 0;
- }
复制代码
还有一个问题,卡在动动手第一题。。
程序会在执行到23行时中断,查了很久,发现是f赋值的问题,好像进了for循环 程序就不承认之前的·int f = 1·一样(如果是java大概会报一个空指针)。。
下面代码在注释调23行之后就不会中断
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char str1[100];
- char str2[100];
- int cp;
- printf("请输入第一个字符串:");
- scanf("%s", str1);
- printf("请输入第二个字符串:");
- scanf("%s", str2);
- printf("请输入比较字符数:");
- scanf("%d", cp);
- int f = 1;
- for(int i=0, j; i<strlen(str1) && i<cp; i++)
- {
- if(j = str1[i] - str2[i] != 0)
- {
- printf("比较的结果是:%d\n", j);
- //f = 0;
- break;
- }
- }
- if(f==1)
- {
- printf("比较的结果是:0\n");
- }
- return 0;
- }
复制代码
第三个问题:
还有c可以报错吗,每次找个错都要找好久
sizeof() 的结果是对的,,它不是看字符的长度,而是变量所占内存空间的大小 char str2[10],所以 sizeof(str2) == 10
我只是好奇为什么 str2 打印出来只有 "I lo"
|
|