gpt4 book ai didi

c - 如何在c中添加多个带有空格的字符串?

转载 作者:行者123 更新时间:2023-11-30 21:22:11 24 4
gpt4 key购买 nike

我正在尝试在数组中存储多个带有空格的字符串。

#include<stdio.h>
#define L 30

void main(){

puts("\t+----------------------+\n\t| Contacts Application |\n\t+----------------------+\n");

int noc; // number of contacts

printf(" How many contacts do you want to store: ");
scanf("%d", &noc);

char name[noc][L];
int number[noc];
int a, b; // for counters in loop in switch

if(noc>0){

for(int i = 0; i < noc; i++){
printf("\n\tName %d: ", i+1);
//scanf("%s", &name[i]);
fgets(name[i], L, stdin);

printf("\tNumber: ");
scanf("%d", &number[i]);
}

/** This will clear the screen **/
#ifdef _WIN64
system("cls");
#elif __linux__
system("clear");
#endif

puts("\n\tAll contacts have been saved successfully.\n");
puts("\t1. Show all the contacts.");
puts("\t2. Search any contact.\n");

int choice;
printf("\tEnter your choice: ");
scanf("%d", &choice);

switch(choice){
case 1:

for(int a = 0; a < noc; a++){
printf("\n\t %d: %s - %d", a+1, name[a], number[a]);
}

break;

case 2:
//searchContact();

default:
puts("\n\tInvalid option, please try again.\n");
}

} else{
puts("\nPlease enter more than zero.");
}
} // main function

这段代码不起作用,不知道为什么,@kutt在评论中添加了一个例子,它可以工作,但这个不起作用,为什么?

当执行直接传递到 &number 的 scanf() 时,可以采取哪些措施来解决该问题。

最佳答案

如果在 %d%[^\n] 前面添加空格,则不必使用 fgets。您还应该测试 scanf 的返回值以检查操作是否成功。

这是固定代码。

如果此代码,如果输入值不是数字,我会重复对数字的请求。

#include<stdio.h>
#include <stdlib.h>

void main(){

puts("\t+----------------------+\n\t| Contacts Application |\n\t+----------------------+\n");
int noc; // number of contacts
int cnt;
do {
printf(" How many contacts do you want to store: ");
cnt = scanf("%d", &noc);
} while (cnt != 1);


if(noc>0){
char name[noc][30];
int number[noc];
int a, b; // for counters in loop in switch

for(int i = 0; i < noc; i++){
printf("\n\tName %d: ", i+1);
scanf(" %[^\n]", &name[i]);

do {
printf("\tNumber: ");
cnt = scanf(" %d", &number[i]);
} while (cnt != 1);
}

/** This will clear the screen **/
#ifdef _WIN64
system("cls");
#elif __linux__
system("clear");
#endif

puts("\n\tAll contacts have been saved successfully.\n");
puts("\t1. Show all the contacts.");
puts("\t2. Search any contact.\n");

int choice;
printf("\tEnter your choice: ");
scanf("%d", &choice);

switch(choice){
case 1:

for(int a = 0; a < noc; a++){
printf("\n\t %d: %s - %d", a+1, name[a], number[a]);
}

break;

case 2:
//searchContact();

default:
puts("\n\tInvalid option, please try again.\n");
}

} else{
puts("\nPlease enter more than zero.");
}
} // main function

关于c - 如何在c中添加多个带有空格的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59862951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com