我已经浏览了几个例子和视频,觉得在某些我看不到的地方存在一种基本的误解。
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char String;
char *sendString;
char getString[100];
int counter;
*sendString = String;
printf("\nPlease enter string:\n");
fgets(getString, 100, stdin);
int calcLength(counter);
printf("los1111: %d", counter);
return 0;
}
int calcLength()
{
char *sendString[100];
int counter;
for(counter = 0; *sendString[counter] != '\0'; counter++);
printf("los: %d", counter);
return counter;
}
有几个测试'los'printf函数来查看代码在哪里破解,但不幸的是,这对我没什么影响。非常感谢任何帮助。
答案 0 :(得分:0)
我认为你的结果太复杂了。
在这段代码中:
char String;
char *sendString;
char getString[100];
int counter;
*sendString = String;
如果您只想从fgets
计算字符串的长度,则不需要大多数这些char
声明。
这可以简单地简化为:
char getstring[100];
int myStrLen;
您只需要为fgets
提供字符串缓冲区,以及用于计算最终字符串长度的整数声明myStrLen
。
此外,您的calcLength()
功能存在一些问题。您需要将char []
参数传递给此函数,以便它知道计算长度所需的字符串。它真的应该这么简单:
int
calcLength(char sendstring[]) {
int counter, len = 0;
for (counter = 0; sendstring[counter] != '\0'; counter++) {
len++;
}
return len;
}
根据所有这些建议,您的代码应如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFFSIZE 100
int calcLength(char sendstring[]);
int
main(void) {
char getstring[BUFFSIZE];
int myStrLen;
printf("\nPlease enter string:\n");
if (fgets(getstring, BUFFSIZE, stdin) != NULL) {
getstring[strlen(getstring)-1] = '\0'; // To remove '\n' character from fgets()
}
myStrLen = calcLength(getstring);
printf("String length = %d\n", myStrLen);
return 0;
}
int
calcLength(char sendstring[]) {
int counter, len = 0;
// Every valid character found, increment a counter
for (counter = 0; sendstring[counter] != '\0'; counter++) {
len++;
}
return len;
}
注意:此代码可以改进,但它可以帮助您指明正确的方向。我在代码中添加了一些注释以便澄清。