|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
/*
读取并显示字符串数组
*/
#include <stdio.h>
#define NUMEBR 100
int main(void)
{
int i,k;
char s[NUMBER][128];
for (i = 0; i < NUMBER; i++) {
printf("s[%d] : ", i);
scanf("%s", s[i]);
if (s[i] == " $ $ $ $ $"){
k = i;
break;
}
}
for (i = 0; i < k; i++)
printf("s[%d] = \"%s\"\n", i, s[i]);
return 0;
}
为什么编译不成功?
问题解析:
编译失败的原因是代码中存在一些错误。下面我将指出并解释这些错误。
错误修正:
1. 宏定义错误:在代码中,将宏定义 NUMEBR 作为数组大小参数,但实际上应该是 NUMBER。修正宏定义为 #define NUMBER 100。
2. 数组声明错误:在代码中,将 s[NUMBER][128] 声明为 char s[NUMBER][128],但实际上 NUMBER 是宏定义,应该使用正确的标识符 NUMEBR。修正数组声明为 char s[NUMEBR][128]。
3. 字符串比较错误:在代码中,使用 == 运算符比较字符串是否相等是错误的。C/C++中,字符串的比较需要使用函数 strcmp() 或 strncmp()。修改条件语句为 if (strcmp(s[i], "$ $ $ $ $") == 0)。
4. 未定义变量 k :在代码中,变量 k 在使用之前需要先进行定义。可以在循环外部添加 int k; 进行定义。
最终修正后的代码如下所示:
- #include <stdio.h>
- #include <string.h>
- #define NUMBER 100
- int main(void)
- {
- int i, k;
- char s[NUMBER][128];
- for (i = 0; i < NUMBER; i++) {
- printf("s[%d] : ", i);
- scanf("%s", s[i]);
- if (strcmp(s[i], "$ $ $ $ $") == 0) {
- k = i;
- break;
- }
- }
- for (i = 0; i < k; i++)
- printf("s[%d] = "%s"\n", i, s[i]);
- return 0;
- }
复制代码
请注意,这只是上述代码的修正版本,并不能保证逻辑和功能的正确性。
球一个最佳答案谢谢啦!这对我非常重要!  
|
|