#include<stdio.h> int main() { char s1[80]="abcdefg"; char *str1=; int ni=0; while(*str1) { n++; ; } printf("n=%d",n); return 0; }
时间: 2023-11-28 07:51:10 浏览: 414
这段代码存在语法错误,无法通过编译。具体问题如下:
1. 第4行中声明了一个指针变量 `str1`,但没有进行赋值,导致该指针指向一个未知的地址。
2. 第6行中的 while 循环条件判断表达式 `*str1`,应该是判断指针所指向的字符是否为 '\0',但是缺少了字符常量 '\0'。
3. 第8行中的变量名应该是 `n`,而不是 `ni`。
修改后的代码如下:
```c
#include<stdio.h>
int main() {
char s1[80] = "abcdefg";
char *str1 = s1;
int n = 0;
while(*str1 != '\0') {
n++;
str1++;
}
printf("n=%d", n);
return 0;
}
```
该程序的功能是计算字符串 `s1` 的长度,并将结果输出。运行结果为 `n=7`。
相关问题
#include<stdio.h> int main() { char s1[80]="abcdefg"; char *str1=s1; int ni=0 while(*str1!=0) { n++; *str1++; } printf("n=%d",n); return 0; }改正其中错误本程序目的是利用字符指针计算字符串长度
错误已经修正,以下是改正后的程序:
```c
#include<stdio.h>
int main() {
char s1[80]="abcdefg";
char *str1=s1;
int n=0; // 修正错误:变量 ni 改为 n
while(*str1!=0)
{
n++;
str1++; // 修正错误:*str1++ 改为 str1++
}
printf("n=%d",n);
return 0;
}
```
运行输出结果为:`n=7`,符合预期。
阅读全文