C++ 使用scanf_s时得到4,但使用fgets()时得到1? #包括“stdafx.h” #包括 #包括 void main() { chars[200]; int计数=0,i; printf(“输入字符串\n”); //scanf_s(“%[^\n]s”,s,sizeof(s)); fgets(s、sizeof*(s)、标准DIN); 对于(i=0;s[i]!='\0';i++) { 如果(s[i]='') 计数++; } printf(“给定字符串中的字数为:%d\n”,计数+1); getchar(); }
C++ 使用scanf_s时得到4,但使用fgets()时得到1? #包括“stdafx.h” #包括 #包括 void main() { chars[200]; int计数=0,i; printf(“输入字符串\n”); //scanf_s(“%[^\n]s”,s,sizeof(s)); fgets(s、sizeof*(s)、标准DIN); 对于(i=0;s[i]!='\0';i++) { 如果(s[i]='') 计数++; } printf(“给定字符串中的字数为:%d\n”,计数+1); getchar(); },c++,scanf,fgets,word,C++,Scanf,Fgets,Word,fgets(s,sizeof*(s),stdin)--是错误的。它应该是sizeof(s) *(s)是字符(数组的第一个元素),而s是数组。因为单个字符的大小为1,所以得到了1。为什么一个函数有sizeof(s),而另一个函数有sizeof*(s)?这是一个打字错误!Sorry我将sizeof*(s)更改为sizeof(s)后获得了正确的输出。谢谢你。。。现在您知道,sizeof运算符在应用于表达式时避免使用括号。(无论如何都应该避免将其应用于类型。) #include "stdafx.h" #
fgets(s,sizeof*(s),stdin)代码>--是错误的。它应该是sizeof(s)
*(s)是字符(数组的第一个元素),而s是数组。因为单个字符的大小为1,所以得到了1。为什么一个函数有sizeof(s)
,而另一个函数有sizeof*(s)
?这是一个打字错误!Sorry我将sizeof*(s)更改为sizeof(s)后获得了正确的输出。谢谢你。。。现在您知道,sizeof运算符在应用于表达式时避免使用括号。(无论如何都应该避免将其应用于类型。)
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
void main()
{
char s[200];
int count = 0, i;
printf("enter the string\n");
//scanf_s("%[^\n]s", s, sizeof(s));
fgets(s, sizeof*(s), stdin);
for (i = 0;s[i] != '\0';i++)
{
if (s[i] == ' ')
count++;
}
printf("number of words in given string are: %d\n", count + 1);
getchar();
}