【发布时间】:2025-12-17 12:35:01
【问题描述】:
你好,我是 Visual Studio 代码的新手,我搜索了如何在 c 中读取带空格的字符串
得到以下方法
https://www.geeksforgeeks.org/taking-string-input-space-c-3-different-methods/
所以我在 Visual Studio 中使用了上述链接中指定的扫描集,它在一个程序中运行良好
具体来说,如果只有一个带有 scanset 的 scanf 存在,那么一开始它也可以工作
以下是第一个扫描集没有读取任何内容的两个程序,所以我检查了其他扫描集工作正常的程序
这里有两个程序
1)scanset 甚至没有读取字符串并退出
#include<stdio.h>
#include<iostream>
int main(){
char s[1000];
int N,K,T = 0;
int g=0;
scanf("%d",&T);
scanf("%d%d",&N,&K);
scanf("%[^\n]%*c",s);
for(int i=0;i<T;i++){
for(int j=1;j<=N/2;j++){
if(s[j]!=s[N-j+1]){
g= g+1;
}
}
if(g!=K){
printf("Case #%d: %d",T,K-g);
}
}
}
输出
PS C:\Users\SriHarsha> cd "c:\Users\SriHarsha\" ; if ($?) { g++ kgoodness.cpp -o kgoodness } ; if ($?) { .\kgoodness }
1
5 2
PS C:\Users\SriHarsha>
其中 scanset 读取一个字符串并给出输出,但是当我使用其他 scanf 读取简单字符时,第二个 scanf 语句不起作用
#include<stdio.h>
int main(){
char s[1000];
char d;
scanf("%[^\n]%*c",s);
for(int i=0;i<10;i++){
printf("%c",s[i]);
}
scanf("%c",&d);
printf("%c",d);
}
输出
PS C:\Users\SriHarsha> cd "c:\Users\SriHarsha\" ; if ($?) { g++ scanf.cpp -o scanf } ; if ($?) { .\scanf }
sri
sri
PS C:\Users\SriHarsha>
【问题讨论】:
-
scanf("%d%d",&N,&K); scanf("%[^\n]%*c",s);无法读取1(space)2\nXYZ\n"。考虑使用fgets()读取所有用户输入。 -
您还在使用
scanf()还是只使用fgets()? -
谢谢你,莫妮卡你的建议奏效了
-
对不起,我给了 scanf(" %c ") 而不是 scanf(" %c")
标签: c visual-studio-code