Tag: scanf

如何在C中正确输入字符串

我目前正在学习C,所以我想创建一个程序,要求用户输入一个字符串并输出输入的字符数,代码编译得很好,当我只输入1个字符就可以了,但是当我输入2个或更多字符,无论我输入的字符数是多少,它总会说只有一个字符然后崩溃。 这是我的代码,我无法弄清楚出了什么问题。 int main(void) { int siz; char i[] = “”; printf(“Enter a string.\n”); scanf(“%s”, i); siz = sizeof(i)/sizeof(char); printf(“%d”, siz); getch(); return 0; } 我目前正在学习编程,所以如果有办法使用相同的scanf()函数,我会很感激,因为我还没有学会如何使用任何其他函数,可能无法理解它是如何工作的。

用fscanf或fgets忽略空格?

我想知道是否有任何方法可以忽略fscanf或fgets函数的空格。 我的文本文件在每一行上有两个字符,可以用空格分隔,也可以不用空格分隔。 我需要读取两个字符并将每个字符放在不同的数组中。 file = fopen(argv[1], “r”); if ((file = fopen(argv[1], “r”)) == NULL) { printf(“\nError opening file”); } while (fscanf(file, “%s”, str) != EOF) { printf(“\n%s”, str); vertexArray[i].label = str[0]; dirc[i] = str[1]; i += 1; }

使用fscanf从给定行读取

我想读一个最多10行的txt文件。 该文件的格式如下所示: 1 1 8 2 2 3 3 1 15 4 2 7 我正在尝试编写一个只从传递给它的int提供的行读取的函数。 我想过使用for循环遍历这些行而不扫描任何东西,但我无法弄清楚如何实现它。 到目前为止我的function看起来像这样,for循环还没有正确实现。 void process(int lineNum, char *fullName) { int ii, num1, num2, num3; FILE* f; f = fopen(fullName, “r”); if(f==NULL) { printf(“Error: could not open %S”, fullName); } else { for (ii=0 (ii = 0; ii < (lineNum-1); ii++) { […]

如何将空格扫描成一个字符串?

我试图从用户扫描1-3个单词到一个字符串。 但是,只有第一个单词会扫描。

scanf check in while循环以限制整数输入

我正在编写一个代码,要求用户输入10个整数,然后将它们反馈给他。 我想创建一个“scanf check”来限制字符输入。 while循环的工作原理是它不接受char,但它会跳过整数输入。 int main() { int i = 0, number[10] = {0}; char buf[128] = {0}; for (i = 0; i < 10; i++) { printf("Please input number %d : ", i+1); while(scanf("%d", &number[i]) != 1) { scanf("%s", &buf); printf("Sorry, [%s] is not a number. Please input number %d : ", &buf, i); […]

简单的c程序不断崩溃

#include int main(void) { int a,b,c; printf(“Enter values of a,b,c:”); scanf(“%d %d %d”,a,b,c); printf(“\nDescending order of the numbers entered:”); /*Test for Biggest Number*/ if((a>b)&&(a>c)) printf(“%d”,a); else if((b>a)&&(b>c)) printf(“%d”,b); else if((c>a)&&(c>b)) printf(“%d”,c); /*Test for Second Biggest Number*/ if((a>b&&a<c)||(ac)) printf(“%d”,a); else if((b>a&&b<c)||(bc)) printf(“%d”,b); else if((c>a&&c<b)||(cb)) printf(“%d”,c); /*Test for Smallest Number*/ if((a<b)&&(a<c)) printf("%d",a); else if((b<a)&&(b<c)) printf("%d",b); else if((c<a)&&(c<b)) […]

scanf需要“额外输入”

对于我写的一些简单的HW代码,我需要通过scanf函数获得7个参数: scanf(“%d %d %d %d\n”, &vodka, &country, &life, &glut); scanf(“%d\n”, &ageof); scanf(“%d\n”, &dprice); scanf(“%d\n”, &mprice); 如你所见,我按此顺序要求7个参数: argument [space]参数[space]参数[space]参数(下行) 参数(下线) 参数(下线) 参数(下线) 但是,当运行代码时,我突然需要输入其中的8个,我不知道为什么…… 有人帮忙吗?

malloc和scanf字符串

下面用malloc和scanf和%s得到一个字符串的简单程序如下所示,给出了一个我无法理解的输出。 虽然我’malloced’只有5个字节,但我的输入字符串已超过上述大小但没有分段错误。 scanf是否覆盖了malloc分配? #include #include #include int main() { char * name; int SZSTRING; printf(“Enter size of name :”); scanf(“%d”, &SZSTRING); name = (char*) malloc ((SZSTRING + 1) * sizeof(char)); printf(“Enter name :”); scanf(“%s”, name); printf(“len of ‘name’ : %d\n”,strlen(name)); printf(“name final: \”%s\”\n”,name); free(name); return 0; } Output: OptiPlex-380:~/gsa/compile$ gcc -o try try.c OptiPlex-380:~/gsa/compile$ ./try […]

如何在结构中正确使用fgets?

我无法弄清楚我的代码有什么问题。 这是我的代码: #include #include #define N 20 typedef struct _dog { char dogName[N],ownerName[N]; int dogAge; } Dog; int main() { //Dynamic array int size; printf(“Number of dogs: “); scanf(“%d”, &size); Dog *dog = (Dog*)malloc(sizeof(Dog)*size); printf(“\n”); //Input int i; printf(“Please provide the data: [dogName][ownerName][dogAge] :\n”); for(i=0;i<size;i++) { fgets(dog[i].dogName, sizeof(dog[i].dogName), stdin); fgets(dog[i].ownerName, sizeof(dog[i].ownerName), stdin); scanf("%d", &dog[i].dogAge); } […]

C从文件中读取以空格分隔的值

我需要从文件中读取文本,并根据读取的信息为结构赋值。 这是文本文件的格式: First Middle Last Address city state zip age sex tenure salary \————————————————————– ADA A AGUSTA 33 BABBAGE ROAD LOVELACE GB 19569 28 F 2 350.50 ISSAC A ASIMOV 99 FICTION WAY AMHERST MA 63948 58 M 6 423.88 HUMPHRY R BOGART 71 SAM STREET HOLLYWOOD CA 48482 56 M 5 366.00 结构我必须把它读成: typedef […]