#include<stdio.h> #include<string.h> int lth(char str[][], int size){ int count = 0; while(count < size && str[count][0] != NULL){ count++; } return count; } int main(){ FILE *f; char temp[100], str[20][100]; int i = 0; f = fopen("./student.txt", "r"); while(fgets(temp, sizeof(temp), f) != NULL && i < 20){ int t = 0; while(temp[t] != '\n' /*&& temp[t] != '\0'*/){ t++; } temp[t] = NULL; printf("%s\n", temp); strncpy(str[i], temp, sizeof(str[i])); printf("%s\n", str[i]); i++; } printf("\n"); int j; j = lth(str, 20); printf("%d\n", j); return 0; }这段代码有什么错误
时间: 2024-04-27 07:21:16 浏览: 65
这段代码的错误在于函数定义时的参数类型不正确,应该是 `char str[][100]` 而不是 `char str[][]`。另外,在将字符串复制到二维字符数组 `str` 中时,使用了 `strncpy` 函数,但没有为字符串添加结束符。应该在复制完成后添加 `str[i][t] = '\0'` 来保证字符串的正确性。
相关问题
#include <stdio.h> #include <stdlib.h> void PutRes(void); int fun(char *); int fun (char *p) 接着这个编写C语言:通过函数统计字符串中数字字符的个数,返回结果。在主函数中输入一串字符
代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int countDigits(char*);
int main() {
char str[100];
printf("Enter a string: ");
gets(str);
int count = countDigits(str);
printf("The number of digits in the string is: %d\n", count);
return 0;
}
int countDigits(char *str) {
int count = 0;
while (*str != '\0') {
if (*str >= '0' && *str <= '9') {
count++;
}
str++;
}
return count;
}
```
注意:使用 `gets()` 函数时要小心,因为它没有限制输入的长度,可能会导致缓冲区溢出。更好的选择是使用 `fgets()` 函数。
阅读全文